2016-01-10 3 views
3

У меня есть только базовые знания jquery, и у меня возникли проблемы с пониманием того, как читать код, который мне нужно изменить. Надеюсь, я не вытащил его слишком сильно из контекста, но он входит в число 500 строк кода jquery. Код, указанный в тексте:Сложный синтаксис jquery Я не понимаю

// Expose in jQuery API 
    $.fn.extend({ 
    collapse: function(options, scan) { 
     var nodes = (scan) ? $("body").find("[data-collapse]") : $(this); 
     return nodes.each(function() { 
     var settings = (scan) ? {} : options, 
      values = $(this).attr("data-collapse") || ""; 
     $.each(values.split(" "), function(i,v) { 
      if(v) settings[v] = true; 
     }); 
     new jQueryCollapse($(this), settings); 
     }); 
    } 
    }); 

Об этом кодексе я мало что понимаю. Хотя я знаком с тройным синтаксисом? и: я не понимаю, если эта часть является чем-то совершенно другое:

var settings = (scan) ? {} : options, values = 
$(this).attr("data-collapse") || ""; 

Кроме того, какие пустые фигурные скобки делают? Я просмотрел документацию по синтаксису jquery, но я не нашел объяснений тому, что мне кажется передовым кодированием. Может ли кто-нибудь указать мне в правильном направлении?

(Если требуется дополнительная информация о фонде, это происходит из плагина аккордеона для WordPress, называемого PPM Accordion. Файл accordion.js содержит код выше. Я изменил html, вставив флажок в тему заголовки, которые сворачиваются, но по каким-либо причинам флажки не могут быть проверены. Комментируя вышеописанный код, он восстанавливает флажки, но также останавливает разделение разделов).

ответ

1

var value = a || б;

значение = а если == истинный

еще значение = б

Таким образом, в вашем коде переменная устанавливается в значение атрибута данных «коллапс», когда это значение не является ложным. Если он ошибочен, он будет установлен в пустую строку ("").

+0

Спасибо seahorsepip. Я начинаю это получать, но я все еще боюсь, что мне кажется, что ** var settings = (scan)? {}: опции ** - одна строка кода и ** values ​​= $ (this) .attr ("data-collapse") || "" ** - вторая строка, но почему они разделены запятой? – rtc35

+0

Переменные могут быть установлены на нескольких строках и заканчиваться точкой с запятой (;) или одной строкой (написано на 2 строках, пронумерованной как одна строка) и разделены запятой в javascript. В большинстве случаев я вижу только первый синтаксис, который я предпочитаю и предлагаю сам. – seahorsepip

+0

Еще раз спасибо. Теперь это имеет гораздо больший смысл. И для других, подобных мне, со слабым пониманием jquery, я узнал здесь [https://bytes.com/topic/javascript/answers/817140-variable-initialization-curly-braces](https://bytes. com/topic/javascript/answers/817140-variable-initial-curly-braces), что пустые фигурные скобки инициализируют переменную как новый объект. – rtc35

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