我最近将jQuery从1.8更新到2.1。我突然发现.live()停止工作。 我得到错误TypeError: $(…)。Live不是一个函数。

是否有任何方法可以用来代替.live()?


当前回答

jQuery API文档列出live()在1.7版已弃用,在1.9版已移除:link。

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

此外,它还指出:

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

其他回答

jQuery API文档列出live()在1.7版已弃用,在1.9版已移除:link。

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

此外,它还指出:

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

如果你碰巧正在使用Ruby on Rails的jQuery gem jQuery - Rails,由于某种原因你不能重构你的遗留代码,最后一个仍然支持的版本是2.1.3,你可以在你的Gemfile上使用下面的语法来锁定它:

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

然后可以使用以下命令进行更新:

bundle update jquery-rails

我希望能帮助其他面临类似问题的人。

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

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

.live()已弃用,现已从jQuery 1.9中移除 你应该使用.on()

.live在1.9中被移除,请查看升级指南:http://jquery.com/upgrade-guide/1.9/#live-removed