JQuery:根据条件向元素添加类

时间:2014-10-30 16:14:22

标签: javascript jquery html

在下面的代码段中,如果 strikeWindow 类的div具有“ display:none ”样式,那么类 blockElement 的相应div应该添加“ strikeWindowAddtocart ”类

<div class="boxContent" >
    <div class="strikeWindow" style="display:none">
    </div>
    <div class="blockElement">
    </div>    
</div>
<div class="boxContent" >
    <div class="strikeWindow" style="display:block">
    </div>
    <div class="blockElement">
    </div>     
</div>

我尝试了以下jquery片段,但是它有效。 我希望有一个有效的JSFiddle示例。 谢谢。

$('.strikeWindow').each(function(i, obj) {
    if((obj.style.display).search('block') ==0) {
        $(this).parents('.boxContent').find(".blockElement").addClass("strikeWindowAddtocart");
    }
});

6 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

$('.boxContent>div.strikeWindow:hidden')
.next('.blockElement')
.addClass('strikeWindowAddtocart');
.strikeWindowAddtocart{ background:red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="boxContent" >
    <div class="strikeWindow" style="display:none">I'm Hidden</div>
    <div class="blockElement">BlockElement after hidden strikeWindow</div>    
</div>
<div class="boxContent" >
    <div class="strikeWindow" style="display:block">Visible strikeWindow</div>
    <div class="blockElement">BlockElement after visible strikeWindow</div>     
</div>

答案 1 :(得分:1)

你可以这样做:

$('.strikeWindow').each(function (i, obj) {
    alert($(obj).css("display") == "none") {
        $(this).parents('.boxContent').find(".blockElement").not(this).addClass("strikeWindowAddtocart");
    }
});

答案 2 :(得分:1)

我测试了这段代码并且有效:

$('.strikeWindow').each(function() {
    if ($(this).css("display") == "none")
        $(this).next("div").addClass("strikeWindowAddToCart");
});

答案 3 :(得分:1)

可以这样做:

$('.strikeWindow').each(function(i, obj) {
    if($(this).css("display") == "none") {      // you made a mistake here
       $(this).parents('.boxContent').find(".blockElement").addClass("strikeWindowAddtocart");
    }
});

用于检查元素是否具有特定样式。可以使用.css jquery方法。

答案 4 :(得分:1)

您也可以使用以下代码执行此操作:

var x = $(".strikeWindow").length
for(var i=1; i<=x;i++)
{
    if ($(".strikeWindow:nth-child('+i+')").css("display")=="none")
        $($(".strikeWindow:nth-child('+i+')")).next("blockElement").addClass("strikeWindowAddtocart");
}

答案 5 :(得分:1)

一个有效的JSFiddle示例: http://jsfiddle.net/bbc5rp76/1/embedded/result,html,js,css/

$(".strikeWindow").each(function () {
    var $this = $(this);
    if ($this.css("display") === "none") $this.siblings(".blockElement").addClass("strikeWindowAddtocart");
});