日期:2014-05-16  浏览次数:20436 次

jquery的功能on|live可以给以后出现的元素也添加上事件,那么其他功能能不能事件。
jquery的on|live可以给以后出新的元素添加事件,如果要添加其他的其他的功能能否事件,如果能该怎么做?

$("button").on("click",function(){alert("click!")})

执行过上面代码以后添加的button都可以拥有点击事件。

问题:
$("[title]").tooltip()
如果我想让以后添加的元素有上面的功能能否实现,如果能,该怎么做?

------解决方案--------------------
$("[title]").tooltip()
代码后面执行
$("button").live("click",function(){alert(2)})

或者
$(document).on("click","button",function(){alert(2)})

新版本已经废除live方法了
------解决方案--------------------
引用:
jquery的on
------解决方案--------------------
live可以给以后出新的元素添加事件,如果要添加其他的其他的功能能否事件,如果能该怎么做?

$("button").on("click",function(){alert("click!")})

执行过上面代码以后添加的button都可以拥有点击事件。

问题:
$("[title]").tooltip()
如果我想让以后添加的元素有上面的功能能否实现,如果能,该怎么做?


懒惰是要付出代价的。所谓的on实现对未来元素的事件绑定,只不过是障眼法,本质是对利用事件冒泡在父元素上截获事件然后匹配事件源是否符合预先设定的选择器。

live已经废除,on的这种用法最好少用,要用也请在小范围DOM结构中使用。如果事件触发频繁,而代理的节点又经常是文档根节点,可想要损失多少性能。如果经常有要update的DOM区域,尽量逼近到小范围进行事件委托。例如某个ul会发生appendChild(li),那么大可对这个ul进行事件绑定$("ul.test").on("click","li",function(){});不必要委托到根节点。题外话了~~~~

这里的tooltip不是事件,也没法冒泡,固然没办法。不过,为什么偷懒呢?勤恳一点不行么?那啥,什么时候追加了新的需要进行tooltip()的DOM片段的之后,记得在append完之后,运行一下你的$().tooltop()不就好了么?拿不到新追加的DOM的引用么?肯定拿的到啊!


var code = '<div title="fdsaf"></div>';
var dom = $.parseHTML(code)[0];
$(dom).appendTo("body").tooltip();

------解决方案--------------------
咋不在tooltip里面处理。