2017-05-30 17 views
0

因此,我正在讀這個https://code.tutsplus.com/tutorials/10-ways-to-instantly-increase-your-jquery-performance--net-5551,#9,轉載如下,我不完全明白,有人可以向我解釋(用不同的方式,而不是如何解釋下面) ?如何「返回false」可以優化你的腳本

  • 返回false 如果函數不返回false你可能已經注意到了,你跳的page.When處理更長的頁面頂部,這樣的結果是非常煩人。
  • 所以,與其

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

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

    雖然我太笨了,無法理解那句話說了些什麼,我並不是愚蠢的意識到我可以問這裏沒有愚蠢的問題=) – james

    回答

    0

    下面是通常的情況,如果#item是帶有href,其中最有可能看起來像<a href="#" id="item">

    錨元素

    return false在事件處理程序中相當於event.preventDefault()event.stopPropagation(),這會阻止本機操作的默認執行,在這種情況下會跳轉到#超文本引用並阻止事件冒泡。


    CSS Tricks有一個很好的解釋(相對於event.preventDefault()):

    不同的是,返回false;需要進一步研究,以防止該事件傳播(或「冒泡」)DOM。你可能不知道這一點是,每當一個事件發生在一個元素上時,該事件也會在每一個父元素上觸發。所以假設你在一個盒子裏有一個盒子。兩個盒子都有點擊事件。點擊內框,點擊也會觸發外框,除非您阻止傳播。

    +0

    是的我知道這是對鏈接是真實的,你能想到其他的例子你可能想要做'event.stopPropagation()'? – james

    +0

    我並不確定,但我會假設你只想停止冒泡的地方,那裏有一個父元素也有這個事件監聽器。其他的例子,可能是一個按鍵事件,但沒有我沒有遇到任何我能記得的事情。關於它是一個鏈接的評論更多地是關於點擊時滾動到頂部的頁面,這通常是跟隨在錨點上的結果(除非有其他自定義代碼)。 – vol7ron

    1

    .click(...).on("click", ...)的別名。

    作爲jQuery文檔中用於描述.on()

    返回false從事件處理程序將自動調用event.stopPropagation()event.preventDefault()。一個false的值也可以作爲function(){ return false; }的簡寫傳遞給處理程序。因此,$("a.disabled").on("click", false);將一個事件處理程序附加到所有具有「禁用」類的鏈接,以防止它們在被單擊時被跟蹤,並且還會阻止該事件冒泡。

    這是jQuery爲方便起見添加的一項功能(其中之一)。

    至於性能,我不確定這會以任何有意義的方式增加它。


    這篇文章一般主要是「我在網上聽到的東西」。我懷疑作者是否真正理解他們給出的各種提示的原因。例如,如果你正在緩存選擇(#6),那麼你將不會從偏好選擇類的id(#4)中獲得更多的選擇。

    另一個例子是基本上說「不使用jQuery」的#3。在jQuery中使用任何東西都會導致性能的微觀降低,但這是您在決定使用jQuery時同意的折衷。 jQuery的重點不在於提高性能,而是爲了提高便利性。

    +0

    我肯定會使用這個鏈接(見其他答案),但除此之外,這就是我想知道這有什麼用處。引用'return false'調用'event.stopPropagation()'和'event.preventDefault()'是我正在尋找的實際答案。謝謝! – james