JQuery: привязка и отмена событий Live Click

Итак, у меня есть два вопроса:

  • Я должен использовать вызов внешней функции в своем клик-событии и
  • Я должен использовать событие live click, скорее привязывая типичное событие click.

Итак, моя проблема в том, что я пытаюсь отменить событие клика после его возникновения, а затем переустановить его после завершения кода события клика. Я делаю это, чтобы предотвратить дублирование кликов, пока выполняется код (у меня есть анимация fadeIn/Out, которая позволяет щелкнуть кнопкой дважды или три раза быстрее, тем самым выполняя мой код 2 или 3 раза, что не требуется), Код, который я использую, приведен ниже:

$item.live("click", handleClick);

и

function handleClick(ev) {

    $(this).die("click");

    // perform code here, including things with 'ev'

    $(this).live("click", handleClick);
}

Я сошел с ума, или это должно работать без проблем? Прямо сейчас, я могу щелкнуть один раз, но не позже. Настолько ясно, что die() работает, но не по какой-то причине не привязана к этой функции. Я проверил, что он достигает кода в handleClick(), чтобы повторно связать живой клик.

Любые идеи? Любая помощь будет принята с благодарностью. Спасибо.

Ответ 1

В соответствии с документацией:

Текущие события в настоящее время работают только при использовании с селектором.

$(this) не является селектором.

Ответ 2

Чтобы отвязать обработчики кликов от всех, связанных с использованием .live(), используйте метод .die():

$(".clickme").die("click");

Ответ 3

Вы можете использовать этот шаблон, чтобы отвязать элемент clicked и позволить всем остальным жить:

$('a.myselector').live('click', function() {

    // do things

    $(this).unbind('click').live('click', function() {return false;});

    return false; // block the link
});

работает с JQUERY 1.8.2