Как добавить уникальный обработчик событий jQuery (без дубликатов)? - PullRequest
0 голосов
/ 28 ноября 2011

Учтите это:

var fn = function() { console.log("hi") };
$(document).keydown(fn);
$(document).keydown(fn);

fn будет запущен два раза, когда я нажму клавишу внутри документа.

Есть ли способ добавить событие уникальным образом без необходимости сначала отменять привязку ?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2012

Есть способ, и это путем установки свойства .onkeydown элемента DOM с помощью функции (вообще не использующей jQuery).Поскольку его назначение перезапишет то, что было ранее, оно не будет цепочкой.

Конечно, способность связывать цепочки явно более мощна, и это та сила, которую дает вам jQuery.

Вероятно, что вызов unbind является правильным решением, но просто для полноты настройки опора .on[eventname] будет работать хорошо, когда вы знаете, что есть только одна функция, которую вы хотите вызвать.

0 голосов
/ 28 ноября 2011

Нет.Лучше всего сначала отменить привязку.Вы также можете вручную проверить, какие обработчики связаны с объектом перед привязкой, если вы хотите сделать это таким образом.Смотрите: jQuery находит обработчики событий, зарегистрированные с объектом

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