缩小jQuery结果

时间:2011-04-15 13:55:00

标签: jquery traversal

我已按如下方式搜索元素:

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

如何进一步缩小该结果,例如搜索特定值?

显而易见的答案是:

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

但是我特别想将它分成两步。我查看了find()和has(),但是它们都在dom中,而不是dom属性。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

改为使用.filter

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

如果你宁愿避免(可能不安全)字符串连接,你可以使用过滤功能:

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

答案 1 :(得分:0)

为了补充@Alnitak答案,您可以在同一个第一个查询中使用多个过滤器,例如:

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