复杂的jquery语法我不明白

时间:2016-01-10 02:42:27

标签: jquery accordion

我只掌握jquery的基本知识,而且我无法理解如何阅读我需要修改的代码。希望我没有脱离上下文太多,但它来自500行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 个答案:

答案 0 :(得分:1)

var value = a || B;

value = a if a == true

else value = b

因此,在您的代码中,变量设置为数据属性的值' collapse'当该值不为假时。如果它是假的,它将被设置为一个空字符串("")。