缩小jQuery结果的范围



我已经做了一个搜索元素如下:

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

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

显而易见的答案是:

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

但是我特别想把它分成2步。我查看了find()和has(),但是它们都查看dom内部而不是dom属性。

.filter代替:

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

如果您希望避免(可能不安全的)字符串连接,则可以使用过滤器函数:

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

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

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

最新更新