javascript - JQuery 选择器使用值,但属性未知

标签 javascript jquery

如何使用 JQuery 搜索具有特定属性值的元素,而不考虑属性标记?

喜欢:

$("[*='myvalue']")

应该找到

<a href="target.html" target="myvalue">...
<tr change="myvalue">...

第一个,因为“target”属性,第二个为“change”属性。

有比遍历所有属性更好的解决方案吗?

最佳答案

您可以使用自定义伪选择器来过滤属性。

下面是jQuery方式。

$.expr[":"].attrFilter = function(elem, index, val){
    var len = $(elem.attributes).filter(function () {
        return this.value === val[3];
    }).length;
    if (len > 0) {
        return elem;
    }
};
$('body *:attrFilter("value")').hide();

Fiddle Demo

$.expr[":"].attrFilter 是自定义选择器的扩展机制。您也可以传递一个参数。


语法:

$.expr[':'].selector = function(elem, index, match) { 

}
  • elem 是当前DOM元素
  • index为elem的索引
  • match 是一个数组,里面包含了关于自定义的所有信息 选择器,其中传递的参数位于第 3 个索引处。 ( Reference 1 , Reference 2 )

    • match[0] – 包含完整的伪类选择器调用。在这个例子中:attrFilter("value")
    • match[1] – 仅包含选择器名称。在这个例子中 attrFilter
    • match[2] – 表示在参数表达式中使用了哪种类型的引号(如果有)。即单(')或双(“)。在这个 例如它将是空的。
    • match[3] – 为我们提供参数,即括号中包含的内容。在这个例子中`值

关于javascript - JQuery 选择器使用值,但属性未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30840320/

相关文章:

jquery - 使用 jQuery 检查列表框项目是否存在

php - 如何为 .click 事件赋值

javascript - tinymce 4 如何添加事件处理器

javascript - USB 条形码扫描仪打开浏览器的下载页面

javascript - 如何使用 Javascript DOM 删除动态创建的 html 行中的特定行?

jQuery Ajax 和 XSL

javascript - 单击 Primefaces 数据表中的其他行时不要取消选择行

javascript - 如何使用 python 在 selenium webdriver Chrome 中启用 javascript

JQuery 环岛 - 每次环岛完成移动时获取所选 <lI> 的 ID

javascript - 将焦点设置到表中的下一个输入字段