Обработка событий 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);
});

unbind - ваш друг.

$("#startButton").unbind('click')

вы уверены, что хотите освободить его? Что, если позже вы захотите связать его снова, и снова, и снова? Мне не нравится динамическая обработка событий bind / unbind, так как они, как правило, выходят из-под контроля при вызове из разных точек вашего кода.

вы можете рассмотреть альтернативные варианты:

  • изменить кнопку "отключено" свойство
  • реализуйте свою логику внутри функции "process_click"

просто мои 2 цента, а не универсальный решение.