Я не могу для жизни меня понять, почему эти функции выполняются. Я понимаю, что правильный синтаксис для привязки функции следующий.Эта функция щелчка выполняется даже с правильными обратными вызовами
$('#idOfThing').bind('click', foofunc);
function foofunc() { ///do things }
Однако, что-то происходит с моим кодом. Либо один из этих binds/unbinds работает, либо другие нет. Я пробовал каждую комбинацию, о которой я могу думать.
$(window).on("load", function() {
$('#divContactSticky').addClass("bottomDiv");
$('#divContactSticky').bind('click', FillScreen);
});
var FillScreen = function() {
$('#divContactSticky').unbind("click", FillScreen);
$('#divContactSticky').css('height', '90vh');
};
function CancelForm() {
$('#divContactSticky').css('height', '77px');
$('#divContactSticky').bind('click', function() {
FillScreen();
});
}
Точка зрения состоит в том, чтобы иметь div, прикрепленный к нижней части окна. Когда пользователь нажимает на этот div. ViewPort заполнит div. Внутри этого div находится кнопка «Отмена». Это html и CancelForm() будут выполняться при нажатии. Очевидно, когда DIV щелкает, я должен отвязать функцию, или FillScreen
будет выполняться при каждом входе формы нажмите и т.д.
Я попытался сделать функцию CancelForm() bind
такими же, как тип load
обратного вызова. Я все пробовал. Я сделал FillScreen
= анонимной функции. Я пробовал почти каждую комбинацию возвращаемых типов, о которых я могу думать. Где я иду не так?
Edit:
CancelForm получил преобразования, и проблема не решена. CancelForm следующим образом выполняет FillScreen немедленно.
function CancelForm() {
$('#divContactSticky').css('height', '77px');
$('#divContactSticky').bind('click', FillScreen);
}
** Edit 2: **
@Radicate был частично правильный ответ. Существует большая разница между bind и on/off. Ниже приведен код, который наконец-то сработал.
$(document).ready(function() {
$('.cancelb').click(function() {
CancelForm();
});
$('#divContactSticky').click(FillScreen);
}
$(window).on("load", function() {
$('#divContactSticky').addClass("bottomDiv");
$('#divContactSticky').on('click', FillScreen);
});
var FillScreen = function() {
$('#divContactSticky').off("click", FillScreen);
$('#divContactSticky').css('height', '90vh');
};
function CancelForm() {
$('#divContactSticky').css('height', '77px');
$('#divContactSticky').on('click', FillScreen);
event.stopPropagation()
});
}
Я хотел бы начать с заменой 'привязывать/unbind' с' на/off'. «Начиная с jQuery 1.7, методы .on() и .off() предпочтительнее прикреплять и удалять обработчики событий по элементам». Вы можете попробовать просто 'off/unbind ('click')' также, чтобы убедиться, что у вас нет проблемы с синтаксисом. – dlsso