2014-02-18 64 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意味着没有。