Ответ 1
В соответствии с документацией:
Текущие события в настоящее время работают только при использовании с селектором.
$(this)
не является селектором.
Итак, у меня есть два вопроса:
Итак, моя проблема в том, что я пытаюсь отменить событие клика после его возникновения, а затем переустановить его после завершения кода события клика. Я делаю это, чтобы предотвратить дублирование кликов, пока выполняется код (у меня есть анимация 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(), чтобы повторно связать живой клик.
Любые идеи? Любая помощь будет принята с благодарностью. Спасибо.
В соответствии с документацией:
Текущие события в настоящее время работают только при использовании с селектором.
$(this)
не является селектором.
Чтобы отвязать обработчики кликов от всех, связанных с использованием .live(), используйте метод .die():
$(".clickme").die("click");
Вы можете использовать этот шаблон, чтобы отвязать элемент 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