2014-02-18 3 views
0

Я написал функцию, которая отлично работает для мобильных устройств, основанная на том, что я нашел на SO некоторое время назад.Объяснение функции jQuery для сенсорного события

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

Часть, которую я нашел, была в заявлении «если», которое заставило меня немного обернуть мою голову.

Говорят, что если целевое событие касания находится на #peopleMenu, оно останется открытым или закрывается, если его коснется. Если утверждение сводится к:

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

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

Мой вопрос заключается в основном это общая парадигма программирования, странная особенность JS, или это просто сложнее, чем она должна быть? Благодарю.

ответ

1

Это обычное явление на многих языках. Все в JavaScript имеет встроенное логическое значение, обычно называемое либо правдивым, либо ложным (например, 0 или пустая строка). Поэтому в этом случае, если длина возвращается как 0, оператор if является ложным. Вот замечательная запись на эту тему, касающуюся Javascript, если вы хотите узнать больше: Truthy/Falsy

+0

Точно. Отлично! Спасибо. – cpk

1

Это обычное дело, если вы касаетесь чего-то другого, кроме #peopleMenu или его детей, сделайте что-нибудь.

0 является ложным значением, а каждое другое целое является правдивым.

Использование bang (!) изменить значение, !true == false и !false == true.

Свойство jQuery - это способ узнать, сколько элементов выбрано. 0 означает нет.

Смежные вопросы