javascript - jQuery 通过属性值获取/选择元素

标签 javascript jquery html css dom

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

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

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

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

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

最佳答案

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

有些属性是属性的反射(reflect),也就是说设置属性就设置了属性,这样就可以使用属性选择器了。例如,input 元素的 defaultValue 属性反射(reflect)了它的 value 属性(它的 value 属性不是).

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

重新编辑:

For example, I'd set a property using jQuery like this:

$('#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] 选择器找到它。

关于javascript - jQuery 通过属性值获取/选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38595699/

相关文章:

Javascript 或 CSS 以防止在内容溢出的元素内滚动

javascript - 使 highchart 堆积柱形图计数为零

javascript - jQuery 下载带有链接 onclick 的 csv 文件

jquery - 如果 $(this) 是 nth-child(x)

javascript - 在文本框中显示 ajax 结果时出现问题

python - 使用Python获取html文件上所有<a>标签中href属性的值

PHP 和 CSS : dynamically linking CSS using PHP

javascript - 如何获取字符串中的最后一个值

javascript - 如何使用模运算删除 ng-repeat 生成的未定义复选框?

javascript - 理解异步和等待