2011-04-15 74 views
0

我做的元素的搜索如下:範圍縮小的jQuery導致

var names = $('[name="' + name + '"]'); 

我怎麼去進一步造成向下收窄,例如說,搜索特定值?

答案顯然是要做到:

var names = $('[name="' + name + '"][value="' + value + '"]'); 

但是我特別想把它分成兩個步驟。我看着find()和has(),但是它們都是在dom內部而不是dom屬性。

任何幫助將不勝感激。

回答

0

只是爲了補充@Alnitak答案,您可以在同一個第一個查詢中使用多個過濾器,例如:

$('[name="' + name + '"]') 
         .filter('[value="value1"']).doStuff({}) 
         .end() //goes back to '[name="' + name + '"] 
         .filter('[value="value2"']).doStuffTwo({}); 
7

使用.filter代替:

var names = $('[name="' + name + '"]').filter('[value="' + value + '"]'); 

如果你寧願避免(可能不安全)的字符串連接,您可以使用過濾器功能來代替:

$(selector) 
.filter(function() { 
    return (this.attr('name') === name); 
}) 
.filter(function() { 
    return (this.attr('value') === value); 
}); 
+0

http://api.jquery.com/filter /如果您想要返回給您原始結果,只需使用.end()以允許您鏈接您的呼叫。 $('[name =''+ name +'「])。filter('[value =''+ value +'」]')。end()。filter('[value =''+ value2 +'「 ]'); – 2011-04-15 14:02:19

+0

['.is'](http://api.jquery.com/is/)也可能有用。 – dave1010 2011-04-15 14:04:27

+0

'.is'返回一個布爾值,如果有一個匹配,而不是一組元素。 – Alnitak 2011-04-15 14:05:49