如何在不使用逗号分隔符的情况下搜索 ( 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");
原因:只是好奇并认为可能存在性能差异(第二个更快)。
最佳答案
How can I search elements without using comma seperator.
你不能,多个选择器之间的逗号是唯一可用的 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
});
关于javascript - jquery 在选择器中查找逻辑运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148454/