jQuery 按属性值获取/选择元素

Posted

技术标签:

【中文标题】jQuery 按属性值获取/选择元素【英文标题】:jQuery get/select element by property value 【发布时间】:2016-11-30 10:41:13 【问题描述】:

有没有办法通过属性值获取/选择元素,就像使用属性值一样:

$('[attribute="value"]')

例如,我会像这样使用 jQuery 设置一个属性:

$('#foo').prop('my-property', 'value');

然后我想找到一个具有'my-property' 属性并且其值为'value' 的元素。

【问题讨论】:

任何特定的属性? 你的意思是像输入值吗? 任何特定的元素? 【参考方案1】:

不,在选择器级别没有任何东西可以通过 property 值进行选择,只是(如您所知)属性值。

有些属性是属性的反射,这意味着设置属性会设置属性,这允许您使用属性选择器。例如,input 元素的defaultValue 属性是其value 属性的反映(value 属性不是)。

否则,您可以选择并使用filter 将结果列表过滤为您真正想要的元素。

重新编辑:

例如,我会像这样使用 jQuery 设置一个属性:

$('#foo').prop('my-property', 'value');

不,无法直接通过该属性进行选择,您需要类似于我上面的filter 建议:

var list = $("something-that-gets-you-close").filter(function() 
    return this["my-property"] == "value";
);

您可以考虑改用data-* 属性:

$("#foo").attr("data-my-property", "value");

然后

var list = $("[data-my-property='value']");

选择它(对于与CSS identifier 的定义匹配的值,内引号是可选的)。请注意,属性值始终是字符串。

注意:有一个长期的误解,即 jQuery 的 data 函数是 data-* 属性的简单访问器。它不是。它通过 jQuery 管理与元素关联的数据缓存,该缓存是从data-* 属性初始化,但与它们断开连接。特别是,.data("my-property", "value") 不会让您稍后通过 [data-my-property=value] 选择器找到它。

【讨论】:

感谢您如此详尽的回答!其实这也是我自己在网上搜索后的想法。无论如何,现在它也在 SO 上。

以上是关于jQuery 按属性值获取/选择元素的主要内容,如果未能解决你的问题,请参考以下文章

使用变量按值选择jquery集合中的元素

用于选择具有空值属性的元素的 jQuery 选择器?

从 jQuery 集合中获取每个元素的属性值,放入数组中

jQuery - 从类的元素中获取属性值的列表

JQuery选择器

jquery怎么获取某文本值的元素