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

标签 javascript jquery

如何在不使用逗号分隔符的情况下搜索 ( 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/

相关文章:

jquery - 委托(delegate)是最快的绑定(bind)方式吗?

javascript - 我克隆的元素,功能不起作用,包含在克隆的元素中

javascript - 数据未从父组件传播到子组件

php - 在 PHP 或 JS 中扩展缩短的 URL(如 Bitly、Tinyurl)以查找原始 URL 的最佳方法是什么?

javascript - 在 bootstrap 4 中制作菜单图标不动和全宽下拉菜单

javascript - 过滤集合不起作用

javascript - 将方法转换为 Promise : Nodejs

javascript - 如何使用 jQuery 使对象在视口(viewport)中水平居中?

jquery - 如何让我的密码验证器工作?

javascript - Node.js 将 res.json 表达为 html 页面?