2011-03-29 18 views
21

jQuery'de, virgülle ayrılmış bir liste listesi kullanmadan, birden çok olası özellik değeri tarafından seçilmesi mümkün mü? gibiBirden fazla olası özellik değeriyle seçmek için daha temiz bir yol var mı?

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

Something: Bildiğim kadarıyla hayır o

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

yakın:

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

aşağıdaki şekilde kullanabiliriz jQuery ('[attribute * = "value"]') 'olacaktır. Öznitelik, değer seçiciyi içerir. – JohnP

+0

@JohnP: hmmm, Gerçekten de bu soruya göre tam değerleri umuyordum ve buna biraz çirkin cevap verdim: http://stackoverflow.com/questions/5471777/showing-hiding-the-next-div-on -bir-önceki-div-of-the-the- –

cevap

38

Yani yerine içinde

. temiz temizlemek için bunu yapmayı düşünebilirsiniz ilk önce tüm öğeleri genelinde ortak öğeleri kullanarak seçmektir, daha sonra sadece .find() veya .filter() VEYA değerleri dışarı.

şey

gibi
$('#list1 > option[value]') 
    .filter('[value="1"],[value="2"]') 
    ; 
Böyle özel bir jQuery işlevi yapabilir
+0

... ya da belki de jQuery kendi zincir sarma işlevi ile uzatın. : D –

+2

Ah evet, aslında o kadar da kötü değil (cevabınıza bakarak, yorumu değil ;-)). Benden al. :) –

+1

Yorumun kötü olduğunu söylemiyor BTW. Ancak jQuery'de tam olarak ne hakkında konuştuğunuzu bile bilmemek, bir araya getirmeyi bile bilmemek. :) –

1

:

$('#list1 > option').filterAttrVals('value','1,2'); 
İlgili konular