2011-03-29 40 views
21

jQuery有可能通過多個可能的屬性值進行選擇,而不必使用以逗號分隔的選擇器列表。更清晰的方式來選擇多個可能的屬性值?

所以在代替:

#list1 > option[value="1"], #list1 > option[value="2"], etc 

喜歡的東西:

#list1 > option[value="1"|value="2"], etc 
+0

最接近:

$.fn.filterAttrVals = function (attr, vals) { var filter = '[' + attr + '="' + vals.split(',').join('"],[' + attr + '="') + '"]'; return this.filter(filter); }; 

爲了您例如,你可以通過以下方式來使用它會是'jQuery('[attribute * =「value」]')'。屬性包含值選​​擇器。 – JohnP 2011-03-29 11:36:37

+0

@JohnP:嗯,我真的希望確切的價值,根據這個問題,以及我有點醜陋的答案:http://stackoverflow.com/questions/5471777/showing-hiding-the-next-div-on -mouseover-of-the-pre-div – 2011-03-29 11:38:29

回答

38

不,我知道的。 最乾淨的我能想到的做法是先選擇使用所有項目中的常見元素,然後只需.find().filter()的OR值。

喜歡的東西

$('#list1 > option[value]') 
    .filter('[value="1"],[value="2"]') 
    ; 
+0

...或者用自己的鏈式封裝函數來擴展jQuery。 :D – 2011-03-29 11:39:20

+2

啊,是的,這其實並沒有那麼糟糕(指的是你的答案,而不是評論;-))。 Upvote從我。 :) – 2011-03-29 11:40:17

+1

不說評論是壞的順便說一句。但是,對於jQuery甚至不知道你在說什麼,更不用說知道如何一起破解它。 :) – 2011-03-29 11:46:18

1

您可以自定義的jQuery函數如下:

$('#list1 > option').filterAttrVals('value','1,2'); 
相關問題