有没有办法通过元素的属性值获取/选择元素,就像使用属性值一样:
$('[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/