“return false”如何优化您的脚本

时间:2017-05-30 04:27:44

标签: javascript jquery performance

所以我正在读这个https://code.tutsplus.com/tutorials/10-ways-to-instantly-increase-your-jquery-performance--net-5551,#9,转载如下,我不完全理解,有人可以向我解释(以不同于下面解释的方式)吗?

  1. 返回错误 您可能已经注意到,只要您的函数没有返回false,就会跳到页面的顶部。当处理较长的页面时,这个结果可能非常烦人。
  2. 所以,而不是

    $('#item').click (function () {
      // stuff here
    });
    

    $('#item').click (function () {
      // stuff here
      return false;
    });
    

2 个答案:

答案 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。您可能不知道这一点是每当元素发生事件时,该事件也会在每个单个父元素上触发。所以假设你的盒子里面有一个盒子。两个框都有点击事件。单击内部框,也会在外部框上触发单击,除非您阻止传播。