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
};
}
}

это все еще не работает.

Кто-нибудь знает, в чем реальная проблема? пожалуйста помоги

0

Решение

Получение 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;
}

Вот скрипка

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]