14

有没有一种很好的方法可以将选定的元素过滤到几个类?我知道我可以一次做一个,但这似乎是 jQuery 允许的。

这些是用 ajax 提供的,我无权定义实际的 html。

$('.val>td').each(function () {
    $(this).filter('.price,.quantity,.remove').children().children().addClass('hidetaxfields');
});
4

3 回答 3

24

从您给出的示例中,您所问的内容并不清楚...

这将生成与具有类oneOR的初始选择器匹配的元素的子集two

$(selector).filter('.one, .two');

这将生成与初始选择器匹配的元素的子集,这些元素具有两个类oneAND two

$(selector).filter('.one.two');
于 2013-02-27T01:25:23.953 回答
2

使用该.is()方法应该有效:

$('.val>td').each(function () {
    var $this = $(this);
    if( $this.is('.price, .quantity, .remove') ){
        $this.children().children().addClass('hidetaxfields');
    }
});

但这更好:

$('.val>td.price, .val>td.quantity, .val>td.remove').each(function () {
    $(this).children().children().addClass('hidetaxfields');
});

或这个:

var $tds = $('.val>td').filter('.price, .quantity, .remove');
$tds.each(function () {
    $(this).children().children().addClass('hidetaxfields');
});
于 2013-02-27T01:25:20.867 回答
2

使用过滤器,您可以编写一个过滤器函数,可以像这样(演示):

$('.val>td').filter(function () {
    var that = $(this);
    return that.hasClass('price') || that.hasClass('remove') || that.hasClass('quantity');
}).addClass('hidetaxfields');
于 2013-02-27T01:25:30.557 回答