Я подключил несколько слушателей live (), чтобы автоматически совершать ajax-вызовы для каждой ссылки с ajax в URL:
$("document").ready(function() {
$('a[href^="/ajax"]').live('click', call);
});
function call(e, context, link) {
e && e.preventDefault();
link = link || this;
if(typeof link == "string" || !$(link).hasClass("disabled")) {
newObj(SPZ.AjaxCall, link, context);
}
};
Но иногда я хочу переопределить это (чтобы я мог указатьконтекст, в котором можно найти функции обратного вызова), поэтому я написал для этого метод jQuery
$.fn.customAjax = function(context) {
return this.die().click(function(e){
call.call(this, e, context);
});
};
$(".save").customAjax(myObj);
У меня проблема в том, что если живой обработчик добавляется в коллекцию элементов, я не могу простоиспользуйте die () для одного из этих элементов;Кажется, что die () работает, только если применить его ко всем элементам, на которых был использован live ().
Может кто-нибудь предложить обходной путь, который подавит событие live ()?И, кроме того, каковы мнения людей о том, что команда jQuery меняет поведение die (), чтобы его можно было использовать для удаления обработчиков live () для отдельных элементов;есть ли причины, по которым это было бы плохой идеей?