Я приложил некоторые живые() слушателей, чтобы автоматически принимать вызовы 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);
у меня есть проблема, что если жить обработчик будет добавлен в коллекцию элементов я могу» t просто используйте die() на одном из этих элементов; die() работает только, кажется, если вы примените его ко всем элементам live().
Может ли кто-нибудь предложить обходное решение, которое подавит событие live()? И, в качестве сторонних, мнения людей о том, что команда jQuery меняет поведение die(), так что его можно использовать для удаления обработчиков live() для отдельных элементов; есть ли причины, по которым это было бы плохой идеей?
Не 'die()', как 'live()', требует вызова сразу после селектора? Например, '$ ('a [href^="/ajax "]'). Die()' правильно, но 'this.die()' не является? –
это, возможно, один из аспектов ограничений на die(), но если я заменю это селектором, который находит ссылку, на которую я нацеливаюсь, она все равно терпит неудачу. Проблема заключается в попытке умереть только для подмножества элементов. Живой обработчик был добавлен в – wheresrhys