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