什么';这是jQuery.live()和.on()之间的区别
我发现在jQuery1.7中有一个新方法什么';这是jQuery.live()和.on()之间的区别,jquery,jquery-1.7,Jquery,Jquery 1.7,我发现在jQuery1.7中有一个新方法.on(),它取代了早期版本中的.live() 我很想知道它们之间的区别以及使用这种新方法的好处。请参阅 […]新的.on()和.off()API统一了所有连接方式 将事件添加到jQuery中的文档中-并且它们的键入时间更短![……] 很明显,为什么你不想使用live。正如Felix所提到的,.on是附加事件的一种更加精简的方式 此后,不再建议使用.live()方法 jQuery的版本提供了更好的方法,而这些方法没有它的特性 缺点。特别是,使用 .live
.on()
,它取代了早期版本中的.live()
我很想知道它们之间的区别以及使用这种新方法的好处。请参阅
[…]新的.on()和.off()API统一了所有连接方式
将事件添加到jQuery中的文档中-并且它们的键入时间更短![……]
很明显,为什么你不想使用live。正如Felix所提到的,.on
是附加事件的一种更加精简的方式
此后,不再建议使用.live()方法
jQuery的版本提供了更好的方法,而这些方法没有它的特性
缺点。特别是,使用
.live():
- jQuery在调用
方法之前尝试检索选择器指定的元素,该方法可能是 处理大型文档非常耗时.live()
- 不支持链接方法。例如,
$(“a”).find(“.offsite,.external”).live(…)代码>是 无效,无法按预期工作
- 由于所有
事件都附加在.live()
元素上,因此事件花费的时间最长、速度最慢 处理它们之前的可能路径文档
- 召唤
在中,事件处理程序在停止事件处理程序时无效
附在文件下方;事件已传播到
文档
方法以令人惊讶的方式与其他事件方法交互,例如。,.live()
删除所有单击处理程序 通过调用$(文档)。取消绑定(“单击”)
附加.live()
我是一个使用jQuery的Chrome扩展的作者,还有一个使用
.live()
。扩展的工作方式是使用。live()
将侦听器附加到所有文本区域-这很有效,因为每当文档更改时,它仍然会将侦听器附加到所有新的文本区域
我转到了
.on()
,但效果不太好。每当文档发生更改时,它都不会附加侦听器,因此我已恢复使用.live()
。我猜这是.on()
中的一个bug。我想你要小心点 从.live()
移动到.on()
时,人们偶然发现的一个区别是,将事件绑定到动态添加到DOM的元素时,.on()
的参数略有不同
下面是我们用于.live()
方法的语法示例:
$('button').live('click', doSomething);
function doSomething() {
// do something
}
$(document).on('click', 'button', doSomething);
function doSomething() {
// do something
}
现在,jQuery 1.7版中不推荐使用.live()
,1.9版中删除了.on()
方法。下面是一个使用.on()
方法的等效示例:
$('button').live('click', doSomething);
function doSomething() {
// do something
}
$(document).on('click', 'button', doSomething);
function doSomething() {
// do something
}
请注意,我们是针对文档而不是按钮本身调用.on()
。我们在第二个参数中为正在侦听其事件的元素指定选择器
在上面的示例中,我正在对文档调用.on()
,但是如果使用更靠近选择器的元素,您将获得更好的性能。只要在调用.on()
之前页面上存在任何祖先元素,它就可以工作
这已经解释过了,但很容易遗漏。我需要识别浏览器关闭事件。在做了大量的研究之后,我使用jQuery 1.8.3做了以下工作
因此,.live和.on之间有一个关键区别。如果您使用.live,您的事件会立即被触发,但如果您切换到.on,则不会按时触发。有关详细信息,请查看。。及 .live()方法用于处理内容的动态生成。。。就像我在程序上创建的那样,当我更改Jquery滑块的值时,会添加一个选项卡,并且我希望将关闭按钮功能附加到每个需要关闭的选项卡上
$( "#someid" ).live( "click", function() {
console.log("live event.");
});
.on()
$( "#someid" ).on( "click", function() {
console.log("on event.");
});