jQuery 1.9 .live() 不是函数

2022-08-30 00:13:23

我最近将jQuery从1.8更新到2.1。我突然发现停止工作。
我收到错误。.live()TypeError: $(...).live is not a function

有什么方法可以用来代替?.live()


答案 1

jQuery 在 1.9 及更高版本中已被删除.live()

这意味着,如果您要从版本 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)

之后,将元素移动到选择器,并找到最接近的父元素(最好带有ID):.myButton.on()

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

如果您不知道要将什么作为父级,则文档始终有效:

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

另请参阅:


答案 2

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

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