Как правильно удалить обработчик события в jQuery?

В твоём примере ты просто добавил ещё один обработчик события на свой DIV, но не заменил предыдущий.

$(''#mydiv'').click(function() { return false; });

Этот код добавляет обработчик клика, не зависимо от того, есть ли у твоего DIV-а обработчики этого события, или нет. В JavaScript одному и тому же объекту можно назначить множество разных обработчиков событий, все они сработают при возникновении этого события.

Для того, чтобы удалить обработчик в старых версиях jQuery, использовалась функция .unbind():

$(''#mydiv'').unbind(''click'');

С выходом jQuery 1.7 модель событий была переработана, и хотя методы .bind() и .unbind() по прежнему доступны для обратной совместимости, рекомендуется вместо них использовать соответствующие им методы on() и off().

$(''#mydiv'').click(function() { return false; }); // Добавляет ещё один обработчик события
$(''#mydiv'').off(''click'');
$(''#mydiv'').on(''click.mynamespace'', function() { /* Что-то делаем */ });
$(''#mydiv'').off(''click.mynamespace'');

Есть также функция .one(), которая позволяет повесить обработчик события, который сработает только один раз, а затем удалится.

$("mydiv").one("click", function() {
// Что-то делаем
});
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector