我看到在jQuery 1.7中有一个新的方法.on()
,它取代了早期版本中的.live()
。
我很想知道它们之间的区别,以及使用这种新方法的好处。
发布于 2016-06-14 20:46:55
.live()
此方法用于为当前和将来与当前选择器匹配的所有元素附加事件处理程序。
$( "#someid" ).live( "click", function() {
console.log("live event.");
});
和
.on()
此方法用于将一个或多个事件的事件处理程序函数附加到所选元素。
$( "#someid" ).on( "click", function() {
console.log("on event.");
});
发布于 2013-01-01 08:03:18
我是一个使用jQuery的Chrome扩展"Comment Save"的作者,还有一个使用.live()
的。该扩展的工作方式是使用.live()
将侦听器附加到所有的文本区域-这很有效,因为每当文档发生更改时,它仍然会将侦听器附加到所有新的文本区域。
我搬到了.on()
,但它不能很好地工作。它不会在文档发生变化时附加侦听器-所以我又回到了使用.live()
。我猜这是.on()
中的一个bug。我想你一定要小心。
发布于 2014-06-27 14:39:27
当您处理内容的动态生成时,使用.live()方法...就像我在程序上创建的那样,当我更改Jquery Slider的值时,它会添加一个选项卡,并且我希望将关闭按钮功能附加到将生成的每个选项卡上。我尝试过的代码是..
var tabs = $('#tabs').tabs();
// live() methos attaches an event handler for all
//elements which matches the curren selector
$( "#tabs span.ui-icon-close" ).live( "click", function() {
// fetches the panelId attribute aria-control which is like tab1 or vice versa
var panelId = $( this ).closest( "li" ).remove().attr( "aria-controls" );
$( "#" + panelId ).remove();
tabs.tabs( "refresh" );
});
而且它的工作非常酷。
https://stackoverflow.com/questions/8042576
复制相似问题