Разрешение конфликтов с помощью jQuery live () при использовании AJAX - PullRequest
1 голос
/ 24 апреля 2011

У меня есть кнопки на странице, которая является частью класса с именем "go". Я использую следующий код:

$(".go").live('click', this.handleAction);

У меня также есть события ajax, которые будут загружать другой фрагмент HTML и JS, который заменит вышеуказанные кнопки и содержимое, но в нем также есть фрагмент кода, который может конфликтовать:

$(".go").live('click', this.handleAnotherAction);

Я знаю, что очевидным ответом является изменение имени класса на другое, отличное от "go". Но есть ли другие способы сделать это без изменения имени класса нового элемента, вставленного в AJAX? Может быть, есть способ сбросить привязки live ()?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2011

Если вы хотите удалить привязки live из элементов, вам необходимо использовать функцию связывания die.Обратите внимание, что ваш селектор на die должен точно соответствовать селектору, используемому на live:

// create live bindings:
$(".go").live('click', this.handleAction);

// remove live bindings:
$(".go").die('click');

// you can also specify the method you want to unbind, in case there are multiple live bindings:
$(".go").die('click', this.handleAction);

// rebind to a new live
$(".go").live('click', this.handleAnotherAction);
0 голосов
/ 24 апреля 2011

Если я вас правильно понимаю, вам нужно использовать die.

Что-то вроде:

$(".go").die("click")

перед вызовом следующего эфира.

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