2015-10-06 7 views
0

я потратил возрастов, пытаясь понять панель навигации Bootstrap, в основном, проведя 4-5 дней чтения StackOverflow сообщенияне может прочитать стенографии JavaScript/запрос

& наконец я думаю, что я нашел answer, который помогает !!!

проблема есть, я не могу понять сопровождающий код javascript/jquery. я угадал его сокращенную версию JS или что-то, но только то, что это означает, что я не могу расшифровать

в основном, сво яваскрипта код, который появляется на this jsfiddle странице

$('.navbar').on('show', function() { 
    var actives = $(this).find('.collapse.in'), 
    hasData; 

    if (actives && actives.length) { 
     hasData = actives.data('collapse') 
     if (hasData && hasData.transitioning) return 
     actives.collapse('hide') 
     hasData || actives.data('collapse', null) 
    } 
}); 

так, если кто-нибудь может объяснить мне, что код делает на линии за строкой, было бы действительно круто

первая строка, которую я понимаю. его синтаксис странной задницы в следующих 6 строках, которые меня озадачили

+0

Вы имеете в виду https://en.wikipedia.org/wiki/Short-circuit_evaluation? 'if (a && b)' == ', если a AND b оба true. 'a || b() '===', если a НЕ истинно, затем выполните b'. Это то, что вы не понимаете? – GitaarLAB

ответ

2
var actives = $(this).find('.collapse.in'), 
    hasData; 

Это создает две переменные. Один с элементами, выбранными из текущей области, которые соответствуют селектору .collapse.in, и одной пустой переменной.

if (actives && actives.length) 

Если активные вещества существует и содержит более нулевых элементов, выполните следующие действия ...

hasData = actives.data('collapse') 

Получить произвольные данные, хранящиеся под ключом collapse. См. https://api.jquery.com/jquery.data/ для получения дополнительной информации.

if (hasData && hasData.transitioning) return 

Если hasData существует и hasData.transitioning является truthy, остановить выполнение функции.

actives.collapse('hide') 

Вызовите collapse функция на actives. Это не родная функция JQuery, так что вы должны смотреть на то, что плагин речь идет от смысла аргумента передается в.

hasData || actives.data('collapse', null) 

Если hasData является truthy, пропустите эту линию. В противном случае установите произвольные данные в переменной actives в значение null.

+0

приветствие чувак, принц. синтаксис первой строки, который я видел раньше, но не помню (чувствую себя немного тупицей об этом). последняя строка, которую я никогда не видел. что касается функции коллапса на активах, это часть плагина Bootraprap collapse.js. cheers again – user3435279