Плагин jquery.unobtrusive-ajax, поврежденный при обновлении до JQuery 1.9.0
Возможный дубликат:
jQuery 1.7 - Включение Live() в on()
//Решение: я просто заменил четыре события, такие как одобренный ответ и ненавязчивый плагин ajax, и снова работает с jquery 1.9.0
Обновить//Соблюдайте комментарии для ответа, помеченного внизу, что является лучшим способом решить эту проблему.
//Оригинальное сообщение:
Я обновился до jQuery 1.9.0, но затем ненавязчивый плагин ajax опустился, поскольку они не рекомендовали метод live. Я попытался заменить его так, потому что обновление исправляет другую ошибку для меня. Однако это не работает. Я просто заменил live так:
$("a[data-ajax=true]").on("click", function (evt) {
evt.preventDefault();
asyncRequest(this, {
url: this.href,
type: "GET",
data: []
});
});
$("form[data-ajax=true] input[type=image]").on("click", function (evt) {
var name = evt.target.name,
$target = $(evt.target),
form = $target.parents("form")[0],
offset = $target.offset();
$(form).data(data_click, [
{ name: name + ".x", value: Math.round(evt.pageX - offset.left) },
{ name: name + ".y", value: Math.round(evt.pageY - offset.top) }
]);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
$("form[data-ajax=true] :submit").on("click", function (evt) {
var name = evt.target.name,
form = $(evt.target).parents("form")[0];
$(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
$("form[data-ajax=true]").on("submit", function (evt) {
var clickInfo = $(this).data(data_click) || [];
evt.preventDefault();
if (!validate(this)) {
return;
}
asyncRequest(this, {
url: this.action,
type: this.method || "GET",
data: clickInfo.concat($(this).serializeArray())
});
});
Ответы
Ответ 1
Эквивалент live
с использованием on
(делегирование):
$(document).on("click","a[data-ajax=true]", function (evt) {...});
Здесь вы можете найти jQuery .on()
:
→ http://api.jquery.com/on/ <
Метод .on() присоединяет обработчики событий к выбранному в данный момент набору элементов в объекте jQuery. Начиная с jQuery 1.7, метод .on() предоставляет все функции, необходимые для присоединения обработчиков событий. Для помощь в преобразовании из старых методов событий jQuery, см. .bind(), .delegate() и .live().
Чтобы удалить события, связанные с .on(), см. .off(). Чтобы прикрепить событие, которое работает только один раз, а затем удаляет сам, см. .one()