如何在不使用逗号分隔符的情况下搜索(jquery find)元素。 JSFiddle here
示例:
<div id="inputs">
<input name="n1" value="v1" type="text" />
<input name="n2" value="v2" type="checkbox" />
<input name="n3" value="v3" type="button" />
<input name="n4" value="v4" type="hidden" />
<input name="n5" value="v5" type="text" />
<input name="n6" value="v6" type="text" />
<input name="n7" value="v7" type="text" />
<input name="n8" value="v8" type="text" />
<input name="n9" value="v9" type="text" />
<input name="n10" value="v10" type="text" />
</div>
1-我可以使用以下代码执行此操作:
$('#inputs')
.find('input[type="text"][name="n7"], input[type="text"][name="n8"]')
.val("found");
2-但我想如何使用它就像:
$('#inputs')
.find('input[type="text"][name="n7" || "n8"])
.val("found");
原因:只是好奇并认为可能存在性能差异(第二种更快)。
答案 0 :(得分:6)
如何在不使用逗号分隔符的情况下搜索元素。
你不能,多个选择器之间的逗号是唯一可用的OR运算符。
但是,您可以链接搜索并仅在单个级别上使用逗号运算符:
$('#inputs input[type="text"]').filter('[name="n7"], [name="n8"]')
这确实更简洁(不重复),也应该更有效率。如果您确实希望将多个值与单个属性表达式匹配,请使用自定义过滤器函数:
$('#inputs input:text').filter(function() {
var name = this.name;
return name=="n7" || name=="n8"; // or
return ~["n7","n8"].indexOf(this.name); // or
return /^n[78]$/.test(this.name); // or whatever
});