我已经做了一个搜索元素如下:
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({});