所以我正在读这个https://code.tutsplus.com/tutorials/10-ways-to-instantly-increase-your-jquery-performance--net-5551,#9,转载如下,我不完全理解,有人可以向我解释(以不同于下面解释的方式)吗?
所以,而不是
$('#item').click (function () {
// stuff here
});
写
$('#item').click (function () {
// stuff here
return false;
});
答案 0 :(得分:1)
.click(...)
是.on("click", ...)
的别名。
如.on()
的jQuery文档中所述:
从事件处理程序返回
false
会自动调用event.stopPropagation()
和event.preventDefault()
。也可以为处理程序传递false
值作为function(){ return false; }
的简写。因此,$( "a.disabled" ).on( "click", false );
将事件处理程序附加到具有类"禁用"的所有链接。这可以防止它们在被点击时被跟踪,并且还可以阻止事件冒泡。
这是jQuery为方便起见而添加的一个功能(众多功能之一)。
至于表现,我不确定这会以任何有意义的方式增加它。
<小时/> 那篇文章一般主要是我在互联网上听到的东西&#34;。我怀疑作者是否真正理解他们提供的各种技巧的原因。
例如,如果您正在缓存选择(#6),那么您不会因为选择(#4)而更喜欢使用ID而不是很多。
另一个例子是#3,其基本上是说&#34;不使用jQuery&#34;。在jQuery中使用任何东西都会导致性能的微观下降,但是当你决定使用jQuery时,这是你同意的权衡。 jQuery的重点不在于提高性能,而在于提高便利性。
答案 1 :(得分:0)
如果#item
是一个带有href的锚元素,则大多数情况下都是如此,这很可能看起来像<a href="#" id="item">
return false
等同于event.preventDefault()
和event.stopPropagation()
,这会阻止本机操作的默认执行,在这种情况下会转到#
超文本引用并且还会阻止事件冒泡。
CSS Tricks有一个很好的解释(与event.preventDefault()
相比):
区别在于返回false;更进一步,它还防止该事件传播(或“冒泡”)DOM。您可能不知道这一点是每当元素发生事件时,该事件也会在每个单个父元素上触发。所以假设你的盒子里面有一个盒子。两个框都有点击事件。单击内部框,也会在外部框上触发单击,除非您阻止传播。