Intro.js不会跳过隐藏元素

时间:2016-06-29 08:37:16

标签: php jquery intro.js

我与Intro.js合作了一个星期,发现它并没有跳过隐藏的元素:

for (var i = 0, elmsLength = allIntroSteps.length; i < elmsLength; i++) {
        var currentElement = allIntroSteps[i];

        //alert(( jQuery(currentElement).is(':visible') ));
        // skip hidden elements
        /*if (jQuery(currentElement).is(':visible') == true) {
          continue;
        }*/

        if (currentElement.style.display == 'none') {
          continue;
        }

        var step = parseInt(currentElement.getAttribute('data-step'), 10);

        if (step > 0) {
          introItems[step - 1] = {
            element: currentElement,
            intro: currentElement.getAttribute('data-intro'),
            step: parseInt(currentElement.getAttribute('data-step'), 10),
            tooltipClass: currentElement.getAttribute('data-tooltipClass'),
            highlightClass: currentElement.getAttribute('data-highlightClass'),
            position: currentElement.getAttribute('data-position') || this._options.tooltipPosition
          };
        }
      }

它仍然无法运作。

谁知道什么是真正的问题?请帮忙

1 个答案:

答案 0 :(得分:1)

获取currentElement.style.display只有在您声明内联样式时才有效。如果您通过css规则设置它,它将无法工作。

<div style="display: none;"> // el.style.display = 'none'
<div class="ruleWithDisplayNone"> // el.style.display = ''

你的jQuery方法不起作用的原因是因为你的条件正在检查你想要的相反。如果您想跳过隐藏的元素,当元素时,您需要continue

if (! jQuery(currentElement).is(':visible')) {
    continue;
}

Here's a fiddle