2013-02-08 103 views
4

我有一些像下面的html。我已经循环了div(accordionContents)中的所有元素。在循环内我需要检查一个条件,如果元素h2应用了两个css类(acc_trigger和active)或不。我该怎么做?如何检查元素是否在jQuery中有多个CSS类

<div id="accordionContents"> 
    <div class="accordioncontainer">   
        <h2 class="acc_trigger active"> 
         <a href="#"> <img class="openImage" src="Images/closed.png"> 
          <div class="openHeader">Division : <b>Quality Assurance</b>(4 items)</div></a></h2> 
        <div class="acc_container" style="display: block;"> 
         <div class="dataRowTeam"> 
          <div class="riskStartContent"> 
           <div class="riskGridHeader"> 
            weekStart</div> 
          </div> 
          <div class="riskEndContent"> 
           <div class="riskGridHeader"> 
            90%</div> 
          </div> 
         </div> 
        </div> 

       </div> 
       <div class="accordioncontainer"> 


        <h2 class="acc_trigger"> 
         <a href="#"> <img class="openImage" src="Images/closed.png"> 
         <div class="openHeader">Division : <b>Quality Assurance</b>(4 items)</div></a></h2> 
        <div class="acc_container" style="display: none;"> 
         <div class="dataRowTeam"> 
          <div class="riskStartContent"> 
           <div class="riskGridHeader"> 
            weekStart</div> 
          </div> 
          <div class="riskEndContent"> 
           <div class="riskGridHeader"> 
            90%</div> 
          </div> 
         </div> 
        </div> 

       </div> 
</div> 
+1

请发布包含您的循环的jQuery代码。 – 2013-02-08 11:29:26

+0

我没有写这个代码。因为我不知道如何检查该条件 – JEMI 2013-02-08 11:41:14

回答

4

在特定情况下,这应该是很不够:

var hasActive = $('.acc_trigger').hasClass("active"); // Bool. TRUE/FALSE 

if(hasActive){ 
    // do something if TRUE 
} 

否则,你可以直接去元素存在

$('.acc_trigger.active').css({background: 'red'}); 

LIVE DEMO

顺便说一句,你的HTML格式很不寻常,我宁愿说错:
DIV(块级元素)不应在A(内联)元素中找到

+0

检查后我怎样才能应用一个CSS到一个img标签只有h2元素有两个css类? – JEMI 2013-02-08 11:51:13

+0

@JEMI我在回答中给你看了。在我需要应用CSS的循环内添加了演示 – 2013-02-08 11:53:31

+0

。例如Inside the accordion Content div有多个手风琴集装箱div.Inside这个div有h2 element.this h2元素有多个css我只能将css应用于img标签。 – JEMI 2013-02-08 12:21:07

0

只是试着问hasClass不止一次;)

$(".accordionContents").each(function(){ 
    var $headline = $("h2", this).first(); 
    var hasBothCSSClasses = $headline.hasClass('acc_trigger') & $headline.hasClass('active'); 
}); 
+1

你可以在'hasClass()'E.g.中放置多个类。 '.Class('acc_trigger active')':http://jsfiddle.net/wU8FJ/ – Joonas 2013-02-08 11:44:16

+0

检查后如何将CSS应用于该容器中的图像标签只有h2有两个css类? – JEMI 2013-02-08 11:55:10

+0

多数民众赞成在easy,只需调用.addClass()在找到的图像 'if(hasBothCSSClasses)$(“img”,this).addClass('myspecialClass');' – FibreFoX 2013-02-08 12:01:03

0

试试这个:http://jsfiddle.net/jH8RF/1/

var clslen = $('h2').attr('class').split(' ').join(','); 
var len = clslen.indexOf(','); 

if(len > 0){ 
    alert('elem has more than one class'); 
}else{ 
    alert('elem has just one class'); 
} 
0

试试这个:

$('.accordionContents h2').each(function() { 
    if ($(this).is('.acc_trigger.active')) { 
     // do something... 
    }) 
}); 
0
var strValue = $("h2").prop('class').trim(); 
if(strValue.indexOf(" ") > -1) 
{ 
    //This element has multiple classes. 
} 
else 
{ 
    //This element has a single class. 
} 
相关问题