我有应用程序通过Ajax带来响应,并在每次刷新时创建5-20个新的jQuery单击侦听器。 IE和Mozilla浏览器似乎都在减慢使用速度。这会显着降低浏览器性能吗听众可以“被释放”吗?
答案 0 :(得分:3)
添加Andy所说的关于生活的内容。
您应该对要添加到页面的元素使用delegate或live。听起来你没有将唯一事件绑定到新元素(每次刷新),而是重用函数。
在jQuery 1.4.2中,使用可以像这样使用delegate():
// the container, the selector, "the event", the function to be called
$("#container").delegate(".selector", "click", function(){
// do stuff...
});
这只需要调用一次,并且每个添加到“#container”的“selector”类的新元素都会绑定其click事件
答案 1 :(得分:2)
在删除元素或.bind()
时,将释放使用.unbind()
设置的侦听器。那些使用.live()
设置的设置会一直存在,直到你调用.die()
或者它们绑定的元素被删除(如果你指定,它可能在DOM中的某个地方,否则它将默认为DOM根目录 - {{ 1}}通过不绑定到目标元素来工作,因此可以删除/替换/更新元素,并且仍然绑定事件侦听器。
5-20个听众听起来有点太多 - 如果可能的话,考虑绑定较少的处理程序,因为旧的浏览器会在压力下破解得比新的浏览器快得多。
答案 2 :(得分:2)