jQuery 1.9 .live()不是函数

2020/10/09 17:41 · javascript ·  · 0评论

我最近将jQuery从1.8更新到了2.1。我突然发现这些.live()停止工作。

我得到了错误
TypeError: $(...).live is not a function

有什么可以代替的方法.live()吗?

jQuery.live()已从1.9版开始删除。

这意味着,如果您要从1.8版或更早版本进行升级,则如果不遵循以下迁移指南,将会发现事情中断了。您不能简单地将其替换.live().on()


开始搜索并替换之前,请先阅读以下内容:

对于快速/热补丁上线的站点,只是替换关键字liveon
因为参数是不同的

.live(events, function)

应该映射到:

.on(eventType, selector, function)

(子)选择器非常重要!如果由于任何原因不需要使用此功能,请将其设置为null


迁移示例1:

之前:

$('#mainmenu a').live('click', function)

之后,将子元素(a)移至.on()选择器:

$('#mainmenu').on('click', 'a', function)

迁移示例2:

之前:

$('.myButton').live('click', function)

之后,将元素(.myButton)移至.on()选择器,然后找到最近的父元素(最好使用ID):

$('#parentElement').on('click', '.myButton', function)

如果您不知道该如何放置父项,请body始终执行以下操作:

$('body').on('click', '.myButton', function)

也可以看看:

您可以通过包含以下JavaScript代码来避免重构代码

jQuery.fn.extend({
    live: function (event, callback) {
       if (this.selector) {
            jQuery(document).on(event, this.selector, callback);
        }
        return this;
    }
});

.live()jQuery> = 1.9的前向端口避免在.live()
使用优化的DOM选择器上下文
上重构JS依赖项

/** 
 * Forward port jQuery.live()
 * Wrapper for newer jQuery.on()
 * Uses optimized selector context 
 * Only add if live() not already existing.
*/
if (typeof jQuery.fn.live == 'undefined' || !(jQuery.isFunction(jQuery.fn.live))) {
  jQuery.fn.extend({
      live: function (event, callback) {
         if (this.selector) {
              jQuery(document).on(event, this.selector, callback);
          }
      }
  });
}

jQuery API文档live()从1.7版开始列出,从1.9版开始:link

版本已弃用:1.7,已删除:1.9

此外,它指出:

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

.live()已被弃用,现在已从jQuery 1.9中删除。您应该使用.on()

.live在1.9中已删除,请参阅升级指南:http : //jquery.com/upgrade-guide/1.9/#live-removed

一个非常简单的修复程序,无需更改代码,只需添加jquery迁移脚本,即可在此处下载
https://github.com/jquery/jquery-migrate/

它提供了不建议使用的jQuery,但需要一些功能,例如“实时”,“浏览器”等

如果没有必要,我倾向于不使用.on()语法。例如,您可以像这样轻松迁移:

旧:

$('.myButton').live('click', function);

新:

$('.myButton').click(function)

以下是有效事件处理程序的列表:https : //api.jquery.com/category/forms/

如果您碰巧正在使用Ruby on Rails的jQuery gem,jquery-rails并且由于某种原因您无法重构旧代码,那么仍然支持的最后一个版本是2.1.3,可以通过在您的代码上使用以下语法来锁定它Gemfile

gem 'jquery-rails', '~> 2.1', '= 2.1.3'

那么您可以使用以下命令进行更新:

bundle update jquery-rails

希望对其他面临类似问题的人有所帮助。

本文地址:http://javascript.askforanswer.com/jquery-1-9-livebushihanshu.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!