我最近将jQuery从1.8更新到2.1。我突然发现.live()停止工作。 我得到错误TypeError: $(…)。Live不是一个函数。
是否有任何方法可以用来代替.live()?
我最近将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()
.live()已弃用,现已从jQuery 1.9中移除 你应该使用.on()
如果你碰巧正在使用Ruby on Rails的jQuery gem jQuery - Rails,由于某种原因你不能重构你的遗留代码,最后一个仍然支持的版本是2.1.3,你可以在你的Gemfile上使用下面的语法来锁定它:
gem 'jquery-rails', '~> 2.1', '= 2.1.3'
然后可以使用以下命令进行更新:
bundle update jquery-rails
我希望能帮助其他面临类似问题的人。
.live在1.9中被移除,请查看升级指南:http://jquery.com/upgrade-guide/1.9/#live-removed
jQuery .live()在1.9版之后被移除
这意味着如果您从1.8版本或更早版本升级,如果您不遵循下面的迁移指南,您将会注意到一些问题。你不能简单地用.on()代替.live() !
在开始搜索和替换之前阅读:
对于实时站点上的快速/热修复,不要只是将实时功能替换为on,因为参数是不同的!
.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)
如果你不知道把什么作为父元素,文档总是可以工作的:
$(document).on('click', '.myButton', function)
参见:
jQuery -如何使用“on()”方法而不是“live()”? jQuery 1.9迁移指南