2013-02-27 57 views
10

有沒有一種很好的方法來完成將選定元素過濾到幾個類?我知道我可以一次完成一個,但這似乎是jQuery允許的。jQuery:多個類的過濾器

這些都是用ajax提供的,我沒有權限定義實際的html。

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

將類直接添加到您的稅務字段不是更容易嗎,所以您可以輕鬆選擇它們以便隱藏? – 2013-02-27 01:23:44

+0

我很困惑,你問是否可以在'.filter()'中使用''.price,.quantity,.remove''?由於'.filter()'帶有一個jQuery選擇器,因此您可以使用逗號來分隔多個選擇標準。這是「多選擇器」:http://api.jquery.com/multiple-selector/ – ajp15243 2013-02-27 01:24:08

+0

是的,這是我嘗試的場景。它只是沒有工作。 – 2013-02-27 01:27:07

回答

19

你所要求的心不是清楚從前mple你給...

這將產生由具有類的inital選擇相匹配的元素的子集one OR two

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

這將產生由inital匹配的元素的子集選擇有兩個類onetwo

$(selector).filter('.one.two'); 
+0

第一個是我的目標。我想知道爲什麼它不起作用? – 2013-02-27 01:33:02

+0

缺失的空間? – 2013-02-27 01:33:47

+0

白色空間在那裏無關緊要。 – 2013-02-27 01:34:40

1

使用.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'); 
}); 
2

帶過濾器,你可以寫一個過濾功能可以做到這一點,像這樣(demo):

$('.val>td').filter(function() { 
    var that = $(this); 
    return that.hasClass('price') || that.hasClass('remove') || that.hasClass('quantity'); 
}).addClass('hidetaxfields'); 
+0

v方便,謝謝! – ptim 2013-10-17 04:56:58