jquery включает и выключает обработчики событий - PullRequest
19 голосов
/ 29 марта 2012

Как бы я применил директиву off к именованному обработчику?

ex

var $btn = $("#theBtn");
var namedHandler = $btn.on("click", function() {
//do something
//then turn off
})

я бы отключил его следующим образом

$btn.off("click");

илиМогу ли я сделать что-то еще, теперь оно хранится в переменной?

namedHandler.off("click");

или

namedHandler.off();

и т. д.

Любые указатели очень ценятся.

Ответы [ 4 ]

12 голосов
/ 29 марта 2012

Вы также можете сделать это

function handleClick(event) 
{
    // code
}

$('#btn').on('click', handleClick);

$('#btn').off('click', handleClick);

Некоторые полезные примеры только о включении / выключении здесь .

11 голосов
/ 29 марта 2012

Та же ссылка на объект jQuery будет в $btn и namedHandler.Оба возвращают ссылку на одну и ту же вещь, поэтому назначение присваивает одну и ту же вещь.

Вы можете превратить ее off() любым из этих методов.1010 * пространство имен ваше событие , поэтому off('click', ...) не сможет открепить все click события.

8 голосов
/ 18 апреля 2014

В дополнение к тому, что сказал @alex & @WereWolf, я часто нахожу это полезным: Для одноразового обработчика событий вы можете использовать .one() вместо .on(), за которым следует .off()

$( "#foo" ).one( "click", function() {
  alert( "This will be displayed only once." );
});

http://api.jquery.com/one/

2 голосов
/ 29 марта 2012

Вы можете определить функцию для вашего обработчика и передать ее .off(), чтобы отключить этот обработчик, и .on(), чтобы включить его.

В документации приведены примеры для достижения этой цели

http://api.jquery.com/off/

function aClick() {
  $("div").show().fadeOut("slow");
}
$("#bind").click(function () {
  $("body").on("click", "#theone", aClick)
    .find("#theone").text("Can Click!");
});
$("#unbind").click(function () {
  $("body").off("click", "#theone", aClick)
    .find("#theone").text("Does nothing...");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...