2008-09-23 6 views
7

Я хочу привязать событие click к элементу кнопки, а затем удалить его, но я не могу получить unclick() или unbind() событие (ы) для работы, как ожидалось. В приведенном ниже коде кнопка «tan» color и событие click срабатывает.Обработка событий jQuery unclick() и unbind()?

window.onload = init; 
function init() { 
    $("#startButton").css('background-color', 'beige').click(process_click); 
    $("#startButton").css('background-color', 'tan').unclick(); 
} 

Как удалить события из моих элементов?

ответ

18

Нет такой вещи, как unclick(). С чего взял?

Вы можете удалить отдельные обработчики событий из элемента с помощью вызова отвязать:

$("#startButton").unbind("click", process_click); 

Если вы хотите удалить все обработчики, или вы использовали анонимную функцию в качестве обработчика, вы можете опустить второй аргумент unbind() :

$("#startButton").unbind("click"); 
+0

http://www.visualjquery.com/1.0.4.html unclick (fn) Удаляет связанное событие клика от каждого из согласованных элементов. Вы должны передать идентичную функцию, которая использовалась в исходном методе связывания. – 2008-09-24 14:49:54

0

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

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

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

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

6

Или вы могли бы иметь такую ​​ситуацию, когда вы хотите, чтобы отвязать функцию щелчка только после того, как вы используете его, как я должен был:

$('#selector').click(function(event){ 
    alert(1); 
    $(this).unbind(event); 
});