var el = document.getElementsByTagName('div');
for (var i = 0; i < el.length; i++) {
var attr = el[i].attributes; /* get all attributes on the element */
for (var j = 0; j < attr.length; j++) {
if (attr[j].name.indexOf('data-') == 0) { /* if element has an attribute whose name has data- */
el[i].style.color = 'red';
break;
}
}
}
var res = [...document.querySelectorAll("*")]
.filter(t => [...t.attributes]
.filter(({ name }) => name.startsWith("data-d-")).length > 0)
console.log(res);
3条答案
按热度按时间fd3cxomn1#
不可以,目前无法根据名称为 *
starting with
* 某个值的属性的存在来选择元素。*starts with
* 选择仅适用于属性值。这样的选择器在CSS选择器4级规范中也没有提到,所以它看起来不会很快可用。
您有以下选择:
element[attribute-name]
。但当确切的属性名称不固定/未知时,此选项不可行。oaxa6hgo2#
使用
ES6+
,你可以使用spread操作符(...
),然后过滤那些属性名称以data-d-
开头的元素:xxhby3vn3#
@Alireza_Ahmadi的答案非常棒,可以扩展为使用主节点选择器来精确定位合格属性......
具有用于专用属性的jQ的标准选择器将是:
jQuery('[role="field-form"]')