我最近将 jQuery 从 1.8 更新到 2.1。我突然发现 .live()
停止工作。
我收到错误 TypeError: $(...).live is not a function
。
有什么方法可以代替 .live()
吗?
原文由 ngplayground 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近将 jQuery 从 1.8 更新到 2.1。我突然发现 .live()
停止工作。
我收到错误 TypeError: $(...).live is not a function
。
有什么方法可以代替 .live()
吗?
原文由 ngplayground 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过包含以下 JavaScript 代码来避免重构代码
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
return this;
}
});
原文由 Liran Barniv 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答12.6k 阅读
7 回答1.7k 阅读
3 回答1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1k 阅读✓ 已解决
jQuery
.live()
从 1.9 版开始被移除这意味着,如果您从 1.8 及更早版本升级,如果您不遵循下面的迁移指南,您会发现出现问题。您不能简单地将
.live()
替换为.on()
!在开始搜索和替换之前阅读:
对于实时站点上的 _快速/热修复_, 不要 只是将函数
live
替换为on
,因为 参数不同!
应映射到:
(子)选择器非常重要!如果您出于任何原因不需要使用它,请将其设置为
null
。迁移示例 1:
前:
之后,将子元素 (
a
) 移动到.on()
选择器:迁移示例 2:
前:
之后,将元素
.myButton
移动到.on()
选择器,并找到最近的父元素(最好带有 ID):如果您不知道作为父级放置什么,则
document
始终有效:也可以看看:
jQuery - 如何使用“on()”方法而不是“live()”?
jQuery 1.9 迁移指南