将类应用于具有属性的元素

时间:2014-06-09 15:46:37

标签: javascript jquery

我正在尝试将一个类应用于属性“state”等于“disabled”的所有元素。我正在查看具有“.overlay”的每个元素并检查状态,然后在属性“state”被“禁用”时附加类“disabledClass”。问题是它在所有元素上应用“disabledClass”。我猜这与我在$(this).find(“。navElement”)中使用$(this)有关.addClass(“disabledClass”); ?

HTML:

<div id="1" class="overlay" state="active">
    <div class="navElement">
        <p>About us</p>
    </div>
</div>
<div id="2" class="overlay" state="disabled">
    <div class="navElement">
        <p>Our values</p>
    </div>
</div>
<div id="3" class="overlay" state="disabled">
    <div class="navElement">
        <p>The founder</p>
    </div>
</div>

JS

$(".overlay").click(function () {
    $(".overlay").attr("state", "disabled");
    $(this).attr("state", "active");

    $(".overlay").each(function () {
        if ($(".overlay").attr("state") == "disabled") {
            $(this).find(".navElement").addClass("disabledClass");
        }
    });

});

2 个答案:

答案 0 :(得分:2)

试试这个:

  $(".overlay").click(function(){
        $(".overlay").attr("state", "disabled");
        $(this).attr("state", "active");

        $(".overlay").each(function(){
                if($(this).attr("state") == "disabled"){ //changed this
                $(this).find(".navElement").addClass("disabledClass");
            }
        });

    });

答案 1 :(得分:2)

抱歉,但我没有真正得到你的问题,即你想知道的......

但这可能有帮助:
使用jQuery查找类overlay且属性state设置为disabled的所有DOM元素,然后将类disabledClass附加到已包含的子类navElement$(".overlay[state='disabled']").find(".navElement").addClass("disabledClass") 这个简单的语句可以解决这个问题:

{{1}}