0

我将下面的所有内容从 .live 更改为 .on 并根据我发现的许多讨论修改了代码,但是当我在 Visual Studio 中运行代码时,我不断收到以下错误:

http://'server':6665/Scripts/jquery.unobtrusive-ajax.js 中第 115 行第 5 列未处理的异常

0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“live”

Visual Studio 显示错误的文件是 jquery.unobtrusive-ajax.js [dynamic] <-- 这个文件在哪里?在我更改以下所有内容之前,它正在使用已弃用的 .live 方法突出显示旧代码......

我还安装了迁移包,但没有用。

$(document).on("click", "a[data-ajax=true]", function (evt) {
    evt.preventDefault();
    asyncRequest(this, {
        url: this.href,
        type: "GET",
        data: []
    });
});

$(document).on("click", "form[data-ajax=true] input[type=image]", 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);
});

$(document).on("click", "form[data-ajax=true] :submit", 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);
});

$(document).on("submit", "form[data-ajax=true]", 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())
    });
});

谢谢!托尼

4

3 回答 3

1

我添加了 jquery migrate 插件并将其包含在 bundles.config 文件中

PM> Install-Package jQuery.Migrate

然后在 bundlesConfig.cs

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                   "~/Scripts/jquery-migrate-1.2.1.js",
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));
于 2014-12-18T11:10:20.593 回答
0

.Live 已从 jquery 1.9+ http://jquery.com/upgrade-guide/1.9/中删除

您应该升级jquery.unobtrusive-ajax.js,因为它依赖于较旧的 jquery 版本。

于 2013-03-26T21:42:21.223 回答
0

我最近不得不对一个遇到 $("foo").live() 错误的 C# 项目进行一些修改。由于动态脚本,对 $("foo").on() 的更改也给我带来了错误。

您看到的是旧代码,因为它已被缓存。对于 IE 11,请执行以下操作:Internet 选项 -> 常规 -> 浏览历史记录 -> 设置 -> 在我启动 IE 时检查更新版本。或者,如果您愿意,每次访问页面时。

于 2015-05-19T00:33:52.263 回答