jquery具有AND OR条件的多个选择器

时间:2013-07-18 16:58:25

标签: javascript jquery html jquery-selectors

如果我有一个有4000行的表

<table>
<tr class="a b c d e f g"><td>xxx</td></tr>
<tr class="a c d e f g"><td>xxx</td></tr>
<tr class="d e f g"><td>xxx</td></tr>
<tr class="a d e f g"><td>xxx</td></tr>
.
.
.
.
.
</table>

如果我想选择哪些行 上课 (a或b或c)和(d或e)和(a或g)

如何编写选择器语句?

谢谢

3 个答案:

答案 0 :(得分:12)

试试这个:

$('.a, .b, .c').filter('.d, .e').filter('.a, .g')

答案 1 :(得分:0)

首先,4000行看起来有点过分,无论你如何看待它都会变慢。如果您只是想使用JQuery根据许多不同的类类型选择所有行,只需使用多选择器语法:

$('.a, .b, .c')...

这将选择具有类a,b或c的所有元素。从那里你可以使用$ .filter()函数进一步过滤列表与其他类类型:

$('.a, .b, .c').filter('.d, .e')...

首先选择所有带有a,b或c类的元素,然后它将过滤掉任何不包含d类或e类的元素。您可以根据需要进行多次过滤,一旦到达最终列表,就可以使用$ .each()函数迭代所有结果:

$result.each(function() { do stuff... });

答案 2 :(得分:0)

试试这个:

$(document).ready(function() {
    var items = $('.a,.b,.c').filter(function() {
        var classes = $(this).prop('class').split(' ');
        return (classes.indexOf('d') > 0 || classes.indexOf('e') > 0) && (classes.indexOf('a') > 0 || classes.indexOf('g') > 0)
    });

    items.find('td').css('color', 'red');
});

见这里:http://jsfiddle.net/UcYnu/