检查一组选定元素中是否存在类

时间:2013-06-17 15:42:25

标签: javascript jquery

我选择了一组行,现在我正在尝试确定它们是否包含特定的类。

我已尝试使用hasClass但未成功以及find

var group = $('table').find('[data-group="group1"]');

//this doesn't work, it always enters in the condition
if(group.find('.active')){
    alert("Founded?");
    group.addClass('green');    
}

http://jsfiddle.net/kAHyA/1/

我也尝试过if(group.find('.active').length),但仍然没有得到正确的结果:

http://jsfiddle.net/kAHyA/3/

5 个答案:

答案 0 :(得分:6)

您可以使用hasClass方法执行此操作 http://api.jquery.com/hasClass/

if(group.hasClass('active')){
...
}

如果你试过这个:

if(group.hasClass('.active')){
...
}

当然不会起作用,请注意与“。”的区别。

答案 1 :(得分:3)

试试这个,

if(group.filter('.active').length)

答案 2 :(得分:1)

只想检查tr是否具有类active并且具有data属性,因此只需一个简单的选择器即可。

var matches = $('table').find('.active[data-group="group1"]'); //This will give you all the trs with the attribute and class active.
if(matches.length > 0)
{
   alert('Found Match');
   matches.addClass('green');
}

如果你只想申请直接课程,只需将其链接起来:

$('table').find('.active[data-group="group1"]').addClass('green');

Demo

答案 3 :(得分:0)

你可以这样做 -

if(group.is('.active')){
    group.addClass('green');    
}

演示---> http://jsfiddle.net/kAHyA/6/

答案 4 :(得分:-1)

.find()的问题在于它总会返回一个jQuery对象,就像任何其他对象(null除外)一样真实。

您想检查长度:if( group.find(".active").length > 0)