Обработка событий jQuery unclick() и unbind()?

Я хочу прикрепить событие щелчка к элементу кнопки, а затем удалить его, но я не могу заставить события unclick() или unbind() работать должным образом. В приведенном ниже коде кнопка имеет tan цвет, и событие клика работает.

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

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


person Edward Tanguay    schedule 23.09.2008    source источник


Ответы (4)


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

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

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

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

$("#startButton").unbind("click");
person Jim    schedule 23.09.2008
comment
visualjquery.com/1.0.4.html unclick(fn) Удаляет связанное событие щелчка. от каждого из согласованных элементов. Вы должны передать ту же функцию, которая использовалась в исходном методе привязки. - person Edward Tanguay; 24.09.2008
comment
Спасибо за информацию. Я копнул немного глубже и обнаружил, что функция unclick() была удалена в jQuery 1.1. - person Jim; 24.09.2008

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

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

развязать ваш друг.

$("#startButton").unbind('click')
person redsquare    schedule 23.09.2008

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

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

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

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

person Filini    schedule 23.09.2008