Вопрос

Я хочу прикрепить событие щелчка к элементу кнопки, а затем удалить его, но я не могу заставить события 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 цента, а не универсальное решение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top