2

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

我已经尝试过但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/

4

5 回答 5

6

您可以使用 hasClass 方法 http://api.jquery.com/hasClass/

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

如果你试过这个:

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

它肯定行不通,请注意与“。”的区别。

于 2013-06-17T15:44:04.660 回答
3

试试这个,

if(group.filter('.active').length)
于 2013-06-17T15:44:57.827 回答
1

只是想检查 tr 是否有 classactive并且有 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');

演示

于 2013-06-17T15:48:59.243 回答
0

你可以这样做 -

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

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

于 2013-06-17T15:43:07.210 回答
-1

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

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

于 2013-06-17T15:45:12.687 回答