【问题标题】:After upgrading jQuery 1.10.2 some problems appear [duplicate]升级 jQuery 1.10.2 后出现一些问题 [重复]
【发布时间】:2013-09-23 16:04:28
【问题描述】:

我已从 jQuery 1.7.1 更新到 1.10.2,现在 jquery.unobtrusive-ajax.js 中出现以下问题:

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

问题已上线。它说$("a[data-ajax=true]") 不接受方法或属性live

如何解决这个问题?我应该升级 jquer.unobtrusive-ajax.js 还是类似的东西?

【问题讨论】:

  • live 已弃用,请改用on
  • 亲爱的,当您升级 jquery 阅读更改日志时,不要只期望一切正常。如果您阅读实时文档,您会发现它已在 jquery 1.9 api.jquery.com/live 中删除。改用 on。
  • 运行迁移插件。 github.com/jquery/jquery-migrate

标签: javascript jquery asp.net-mvc-4


【解决方案1】:

请阅读文档,live 已被删除并替换为 .on()

$(document).on("click", "a[data-ajax=true]", function (evt) {

document 是存放动态内容的容器。

【讨论】:

  • 对不起,我对 jQuery 完全陌生。我应该通过手动修改此文件中已弃用的功能而不是升级整个文件来升级吗?难道没有jquery.unobtrusive-ajax.js的升级版可以从任何地方下载吗?
【解决方案2】:

.live 方法在 1.7 版本中已被弃用并在以后删除,您应该使用 .on

查看文档:

http://api.jquery.com/live/

如果您使用依赖于 live 的插件,那么我将继续使用 1.7 版

【讨论】:

    【解决方案3】:

    了解 jQuery Migrate 插件也很好。它来自 jQuery 本身,可以直接从他们的GitHub 获得。

    该插件的目的是“简化从旧版本 jQuery 的过渡。该插件恢复了已弃用的功能和行为,以便旧代码仍然可以在 jQuery 1.9 及更高版本上正常运行。使用未压缩的开发版本为了诊断兼容性问题,它会在控制台上生成警告,您可以使用这些警告来识别和修复问题。"

    来源:jQuery download page

    【讨论】:

      【解决方案4】:

      使用.on()

      $(document).on("click", "a[data-ajax=true]", function (evt) {
      

      请参阅 .live() 在 1.7 版中已为 deprecated 并在 1.9 中删除。

      从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 来 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 优先于 .live()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 2015-07-05
        • 2019-06-14
        • 2021-02-20
        • 2020-03-07
        • 2020-05-24
        • 1970-01-01
        相关资源
        最近更新 更多