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

Javascript 将类应用于具有属性的元素,javascript,jquery,Javascript,Jquery,我试图对属性“state”等于“disabled”的所有元素应用一个类。我将检查每个有“.overlay”的元素并检查状态,然后在属性“state”为“disabled”时追加类“disabledClass”。问题是它在所有元素上都应用了“disabledClass”。我猜这与我在$(this)中使用$(this)有关 HTML: 试试这个: $(".overlay").click(function(){ $(".overlay").attr("state", "disabl

我试图对属性“state”等于“disabled”的所有元素应用一个类。我将检查每个有“.overlay”的元素并检查状态,然后在属性“state”为“disabled”时追加类“disabledClass”。问题是它在所有元素上都应用了“disabledClass”。我猜这与我在$(this)中使用$(this)有关

HTML:

试试这个:

  $(".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");
            }
        });

    });
试试这个:

  $(".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");
            }
        });

    });

对不起,我真的不明白你的问题,即你想知道什么

但这可能会有所帮助:
使用jQuery查找所有具有class
overlay
和属性
state
设置为
disabled
的DOM元素,然后将class
disabledClass
附加到已经包含class
navElement
的子级。这个简单语句应该可以实现以下功能:

$(".overlay[state='disabled']").find(".navElement").addClass("disabledClass")

对不起,我真的不明白你的问题,即你想知道什么

但这可能会有所帮助:
使用jQuery查找所有具有class
overlay
和属性
state
设置为
disabled
的DOM元素,然后将class
disabledClass
附加到已经包含class
navElement
的子级。这个简单语句应该可以实现以下功能:

$(".overlay[state='disabled']").find(".navElement").addClass("disabledClass")

state不是有效的属性,您应该使用data-*属性,然后答案将被删除change@adeneo在这种情况下,这并不重要。@VisioN-这就是为什么它是一个注释,标记无效,更改标记可能会更改答案,尤其是
data()
更常用于数据属性。另一方面,设置活动状态更常用于类,但无论什么都可以让你的山羊浮动@adeneo我只是没有得到这句话“然后答案会改变”。状态不是一个有效的属性,你应该使用data-*属性,然后答案会改变change@adeneo在这种情况下,这并不重要。@VisioN-这就是为什么它是注释,标记无效,更改标记可能会更改答案,尤其是
data()
更常用于数据属性。另一方面,设置活动状态更常用于类,但无论什么都可以让你的山羊浮动@adeneo我只是没有听到这句话“然后答案会改变”。你应该强调你已经将
if
条件更改为
$(这)
,否则很难看到差异。您应该突出显示您已将
if
条件更改为
$(此),否则很难看出区别。