如果所有类都具有特定状态,则执行操作

时间:2013-09-20 23:08:56

标签: jquery loops each

我正在尝试构建一个将立即触发的脚本:

  • 在带有class =“eventIndicator”的DIV中,span有一个“已验证”类(当前“未经验证”)

  • 带有class =“evenIndicator”的DIV的父级有一个style =“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>

3 个答案:

答案 0 :(得分:1)

您可以轮询它,但效率不高。我会开一个回调,但这是一个轮询片段:

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

答案 1 :(得分:0)

事件触发时使用.toggleClass()。最重要的是,事件必须触发才能发生某些事情。

答案 2 :(得分:0)

您需要在每个show / hide使用情况下触发自己的活动,然后计算可见元素:

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

或者您可以使用setInterval来检查

//编辑:oops抱歉 - 这篇文章是针对您以前的问题版本而制作的 但我想你可以根据需要调整这个答案