как отвязать и связать снова - PullRequest
2 голосов
/ 29 апреля 2011
$("#archive").click(function(event){
        /*do something*/
});

$('#archive2').unbind('click',event);

У меня есть эта функция щелчка, которую я отменяю. Тем не менее, я хочу связать его снова, когда я нажимаю определенную кнопку.

$("#archive").bind("click",event);

Я использую этот код для повторного связывания, но, похоже, он не работает. какие-либо предложения или обходные пути?

Ответы [ 5 ]

6 голосов
/ 29 апреля 2011

Вы должны сохранить ссылку на функцию (вместо передачи анонимной функции):

function handler() {
    // do something
}

$("#archive").click(handler); // bind the first time
$("#archive").unbind('click', handler); // unbind
$("#archive").click(handler); // bind again

Не уверен, что такое event в вашем случае, но если это объект eventпередается в обработчик событий, тогда нет смысла передавать его в unbind и bind.

3 голосов
/ 13 марта 2013

Начиная с jQuery 1.7 вы должны использовать on и off для всех привязок вашего обработчика событий:

var handler = function() {
  alert('The quick brown fox jumps over the lazy dog.');
};
$('#foo').on('click', handler);
$('#foo').off('click', handler);
0 голосов
/ 20 апреля 2018

Попробуйте это:

var closeHandle = function () {
      alert('close');        
};

function addClick() {       
         $("#btnTest").unbind('click').click(closeHandle);          
}
0 голосов
/ 29 апреля 2011

Вам необходимо предоставить обработчик для функции, чтобы вы могли связывать / отменять привязку к ней.(Также позволяет вам связывать / отменять привязку определенных обработчиков событий в пределах одного и того же события:

var handler = function() {
  alert('The quick brown fox jumps over the lazy dog.');
};
$('#foo').bind('click', handler);
$('#foo').unbind('click', handler);

(используется с http://api.jquery.com/unbind/)

0 голосов
/ 29 апреля 2011

Почему бы не иметь логическое значение и оператор if в обработчике событий?

...