我的网页上有导航。单击按钮时会显示导航。然后,当用户点击导航外的任何位置时,我会关闭导航。
$("#navbutton").click(function(){
if($("#navigation:visible"))
$('#navigation').hide();
else {
$('#navigation').show();
}
});
$(document).click(function(event) {
if(!$(event.target).closest('#navigation').length) {
$('#navigation').hide();
}
})
现在,即使导航已隐藏,document
上的点击事件也会继续触发。我在文档上也有许多其他点击事件。
我的问题是,当导航已经隐藏时,应该删除文档上的点击事件是否有任何优势?是否会有一些浏览器的内存发布?我的网页会表现得更快吗?我知道对一个事件的影响很小。但是,假设我有100个类似的导航。删除100个不必要的事件会有益吗?
由于
答案 0 :(得分:0)
阅读标题“你不知道JS:Async& Performance”后,我们非常清楚地表明,前成熟优化是所有邪恶的根源。
你可以直接跳过他书中的chapter。
如果这是一个简单的网页,并且存在一定数量的DOM对象,而不是拥有事件监听器,那么内存中的所有时间都不会有任何损害,如果优化将不会提供任何性能。
在进行优化之前,你必须做一些基准测试,你必须了解你的基准测试,并与现实世界比较那些基准测试结果意味着什么?
答案 1 :(得分:0)
如果您删除元素而不是隐藏它们,如果您将来不需要它,那么浏览器现在可以删除那些事件处理程序,这是消除内存泄漏的方法之一。 最近我浏览了这个博客:
http://javascript.crockford.com/memory/leak.html
这是非常有用的博客。
答案 2 :(得分:0)
停止和事件与否将不会提供任何性能,事实上它只会被用户忽视。
如果您希望页面以IE6或更早版本的浏览器快速运行,那将非常有用。但对于比这更现代的浏览器,你将无法获得更多。
您可以查看这篇非常有用的文章:The Dangers of Stopping Event Propagation