更新到Jquery 1.9.0时,jquery.unobtrusive-ajax插件坏了

Mag*_*son 15 jquery jquery-validate unobtrusive-ajax

可能重复:
jQuery 1.7 - 将live()转换为on()

//解决方案:我只是简单地替换了四次出现,如建议的批准答案和不显眼的ajax插件已启动并再次使用jquery 1.9.0

更新//观察底部标记答案的注释,这是解决此问题的最佳方法.

//原帖:我升级到jQuery 1.9.0,但随后不引人注意的ajax插件因为他们弃用了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())
        });
    });
Run Code Online (Sandbox Code Playgroud)

A. *_*lff 12

live使用on(委托)的等价物是:

$(document).on("click","a[data-ajax=true]", function (evt) {...});
Run Code Online (Sandbox Code Playgroud)

你可以.on()在这里找到jquery的方法文档:

>> http://api.jquery.com/on/ <<

.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集.从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有功能.对于从旧的jQuery事件方法转换帮助,请参阅.bind() , .delegate().live() .

要删除与.on()绑定的事件,请参阅 .off ().要附加仅运行一次然后自行删除的事件,请参阅.one()

  • 并将jquery.validate升级到1.11.0(今天发布):https://nuget.org/packages/jQuery.Validation/1.11.0 (2认同)