Обработка событий jQuery unclick() и unbind() события?
Я хочу прикрепить событие click к элементу button, а затем удалить его, но я не могу получить unclick() или unbind() событие(ы) для работы, как ожидалось. В приведенном ниже коде кнопка имеет цвет "загар", и событие click работает.
window.onload = init;
function init() {
$("#startButton").css('background-color', 'beige').click(process_click);
$("#startButton").css('background-color', 'tan').unclick();
}
Как удалить события из элементов?
4 ответов
нет такой вещи, как unclick()
. Откуда ты это взял?
вы можете удалить отдельные обработчики событий из элемента, вызвав unbind:
$("#startButton").unbind("click", process_click);
если вы хотите удалить все обработчики или использовали анонимную функцию в качестве обработчика, вы можете опустить второй аргумент unbind()
:
$("#startButton").unbind("click");
или у вас может быть ситуация, когда вы хотите отменить функцию click сразу после ее использования, как я должен был:
$('#selector').click(function(event){
alert(1);
$(this).unbind(event);
});
вы уверены, что хотите освободить его? Что, если позже вы захотите связать его снова, и снова, и снова? Мне не нравится динамическая обработка событий bind / unbind, так как они, как правило, выходят из-под контроля при вызове из разных точек вашего кода.
вы можете рассмотреть альтернативные варианты:
- изменить кнопку "отключено" свойство
- реализуйте свою логику внутри функции "process_click"
просто мои 2 цента, а не универсальный решение.