2011-04-15 52 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