Обработка событий jQuery unclick () и unbind () события? - PullRequest
7 голосов
/ 23 сентября 2008

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

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

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

Ответы [ 4 ]

19 голосов
/ 23 сентября 2008

Нет такой вещи как unclick(). Откуда ты это взял?

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

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

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

$("#startButton").unbind("click");
6 голосов
/ 15 сентября 2010

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

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});
3 голосов
/ 23 сентября 2008

unbind ваш друг.

$("#startButton").unbind('click')
0 голосов
/ 23 сентября 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...