Javascript jquery在选择器中查找逻辑运算符

Javascript jquery在选择器中查找逻辑运算符,javascript,jquery,Javascript,Jquery,如何在不使用逗号分隔符的情况下搜索()元素 例如: <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"

如何在不使用逗号分隔符的情况下搜索()元素

例如:

<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>
2-但我想如何使用它:

$('#inputs')
    .find('input[type="text"][name="n7" || "n8"])
    .val("found");
原因:只是好奇,并认为可能存在性能差异(第二个更快)

如何在不使用逗号分隔符的情况下搜索元素

不能,多个选择器之间的逗号是唯一可用的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
});
如何在不使用逗号分隔符的情况下搜索元素

不能,多个选择器之间的逗号是唯一可用的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
});

那么
$('#inputs:text').filter('[name=“n7”],[name=“n8”]”)呢
?这个问题已经得到了回答,如果不使用comma@Bergi感谢您的快速响应,它运行良好,但不是答案。您可以设置一个,并将第一种方法与第二种方法进行比较,例如,使用
.filter
。您已经知道(我希望),
[name=“n7”| |“n8”]
不存在,所以猜测哪一个更快是没有意义的。另外@tpbowden谢谢您,实际上我找不到它。所以我得到了我的答案。对不起打扰了。希望谷歌搜索者能从这里找到正确的链接。
$(“#输入:文本”)。过滤器(“[name=“n7”],[name=“n8”]”)
?这个问题已经得到了回答,如果不使用comma@Bergi感谢您的快速响应,它运行良好,但不是答案。您可以设置一个,并将第一种方法与第二种方法进行比较,例如使用
.filter
。您已经知道(我希望),
[name=“n7”| |“n8”]
不存在,所以猜测哪一个更快是没有意义的。另外@tpbowden谢谢您,实际上我找不到它。所以我得到了我的答案。对不起打扰了。希望谷歌搜索者从这里找到正确的链接。+1是一个使用
|
语法的不错的解决方案,不过如果开发人员仅仅为了避免逗号分隔语法而使用卷积过滤器选项(假设自定义过滤器函数没有额外的好处),我会非常惊讶。@FrançoisWahl:当然,这个例子太琐碎了。我只想指出一些需要javascript运算符、嵌套表达式或复杂逻辑的情况下的过滤器谓词。+1是使用
|
语法的一个很好的解决方案,尽管如果开发人员使用卷积过滤器选项只是为了避免逗号分隔语法,我会非常惊讶(假设自定义筛选函数没有额外的好处)。@FrançoisWahl:当然,这个例子太简单了。我只想针对需要javascript运算符、嵌套表达式或复杂逻辑的情况指出筛选谓词。