2014-10-30 66 views
0

在下面的代码段中,如果与strikeWindow类div有一个元件“显示:无”风格然后用类blockElement相应的div应加一类“strikeWindowAddtocartJQuery的:添加类基于条件

<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"); 
    } 
}); 
+0

style.display没有给出正确的结果,您需要访问computedCss属性 – 2014-10-30 16:18:27

回答

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

你可以这样说:

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

我测试此代码,它的工作原理:

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

这是可以做到的:

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

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

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