6

如果我有一个有 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)的行

如何编码选择器语句?

谢谢

4

3 回答 3

13

尝试这个:

$('.a, .b, .c').filter('.d, .e').filter('.a, .g')
于 2013-07-18T17:02:14.190 回答
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... });
于 2013-07-18T17:05:49.573 回答
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/

于 2013-07-18T17:09:05.323 回答