действие, если все классы имеют определенный статус

0

Я пытаюсь создать скрипт, который будет запущен, как только:

  • в пределах DIV с классом = "eventIndicator", span имеет класс "validated" (в настоящее время "unvalidated")

А ТАКЖЕ

  • родительский элемент DIV с классом = "evenIndicator" имеет стиль = "display: block;" (в настоящее время style = "display: none;"

В качестве примера я добавил небольшой отрывок из моего кода.

Как вы думаете, это возможно? Я попытался с JQuery, но не смог добиться успеха. Спасибо за вашу помощь.

<div id="hidden3">
    <div id="asset_parameters">
        <div id="Rente_div" style="display: none;">
            <span>Rente:</span>
            <span><input name="Rente" id="Rente" onblur="asset_value(this.id)"></span>
            <div class="eventIndicator">
                <span class="unvalidated">Incomplete</span>
            </div>
        </div>
        <div id="Bouquet_div"  style="display: none;">
            <span>Bouquet:</span>
            <span><input name="Bouquet" id="Bouquet" onblur="asset_value(this.id)"></span>
            <div class="eventIndicator">
                <span class="unvalidated">Incomplete</span>
            </div>
        </div>
        <div id="Valeur_libre_div"  style="display: none;">
            <span>Valeur libre:</span>
            <span><input name="Valeur_libre" id="Valeur_libre" onblur="asset_value(this.id)"></span>
            <div class="eventIndicator">
                <span class="unvalidated">Incomplete</span>
            </div>
        </div>
    </div>
Теги:
loops
each

3 ответа

1
Лучший ответ

Вы можете опросить его, но это не очень эффективно. Вместо этого я бы включил обратный вызов, но здесь был фрагмент опроса:

(function poll () {
    var $div = $('.eventIndicator');
    if ($div.find('span.validated').length && $div.parent().is(':visible')) {
        // do something
    } else {
        setTimeout(poll, 500);
    }
}());
0

вам нужно запустить собственное событие при каждом show/hide использования, а затем подсчитать видимые элементы:

if($('#Rente_div:visible, #Bouquet_div:visible, #Valeur_libre_div:visible').length === 3) alert('OK')

или вы можете просто использовать setInterval чтобы проверить это

//edit: oops sorry - этот пост был сделан для вашей предыдущей версии вопроса, но я думаю, вы можете настроить этот ответ для своих нужд

  • 0
    спасибо, это сработало!
0

Используйте .toggleClass() при срабатывании события. Суть в том, что событие должно срабатывать, чтобы что-то произошло.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню