Плагин 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()