如何在不使用逗号分隔符的情况下搜索(jquery find)元素.JSFiddle在这里.
例:
<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>
Run Code Online (Sandbox Code Playgroud)
1-我可以使用以下代码执行此操作:
$('#inputs')
.find('input[type="text"][name="n7"], input[type="text"][name="n8"]')
.val("found");
Run Code Online (Sandbox Code Playgroud)
2-但我想如何使用它就像:
$('#inputs')
.find('input[type="text"][name="n7" || "n8"])
.val("found");
Run Code Online (Sandbox Code Playgroud)
原因:只是好奇并认为可能存在性能差异(第二是更快).
如何在不使用逗号分隔符的情况下搜索元素.
你不能,多个选择器之间的逗号是唯一可用的OR运算符.
但是,您可以链接搜索并仅在单个级别上使用逗号运算符:
$('#inputs input[type="text"]').filter('[name="n7"], [name="n8"]')
Run Code Online (Sandbox Code Playgroud)
这确实更简洁(不重复),也应该更有效.如果您确实希望将多个值与单个属性表达式匹配,请使用自定义过滤器函数:
$('#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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |