2014-02-18 72 views
0

我寫了一個很適合移動的函數,基於前一段時間我在SO上找到的東西。觸摸事件jQuery函數的解釋

jQuery(document).on('touchstart', function(event) { 
     if (!jQuery(event.target).closest("#peopleMenu").length) { 
      jQuery("#peopleMenu").fadeOut(); 
     } 
    }); 

我發現的部分是在「if」語句中,這讓我有點纏住我的頭。

這就是說,如果目標觸摸事件在#peopleMenu上,它將保持打開狀態,或者在觸摸時關閉。如果聲明歸結爲:

if (!1) { 
    //false - understand this. 
} 

if (!0) { 
    //true - hmmm. 
} 

我的問題是基本上這是一個常見的編程範式,一個奇怪的JS功能,或者是比它需要的只是麻煩?謝謝。

回答

1

這在很多語言中都很常見。 JavaScript中的所有東西都有一個固有的布爾值,通常稱爲真或僞(如0或空字符串)。所以在這種情況下,如果長度回到0,那麼if語句是錯誤的。這裏是關於這個話題的一個很好的寫法,因爲它涉及到Javascript,如果你想知道更多:Truthy/Falsy

+0

沒錯。很棒的閱讀!謝謝。 – cpk

1

這是常見的,這意味着如果你觸摸別的東西而不是#peopleMenu或它的孩子,做點什麼。

0是一個falsy值,而其他整數都是真值。

使用砰砰聲(!)反轉值!true == false!false == true

jQuery的.length屬性是知道選擇了多少元素的方法。 0意味着沒有。