CSS选择器按属性匹配元素's的名称开始
CSS selector to match elements by attribute's name start
是否有CSS选择器来匹配这些元素?(我需要它用于adblocker
配置,查看了W3C selectors
文档-没有发现任何提示。需要通用解决方案,因为data-d-
之后的部分被站点随机化)。
<div data-d-9y3x>
<div data-d-m01>
<div data-d-whatever>
否,目前无法根据名称为starting with
某个值的属性的存在来选择元素。starts with
选择仅适用于属性值。
CSS Selectors Level 4规范中也没有提到这样的选择器,所以它看起来不会很快出现。
您有以下选择:
- 将选择器组与格式为
element[attribute-name]
的所有可能的属性名称值一起使用。但是,当确切的属性名称不固定/未知时,此选项是不可行的 - 使用JavaScript(或您喜欢的其他脚本库)。下面是一个非常快速的粗略样本,以方便未来的游客
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;
}
}
}
<div data-d-9y3x>Some</div>
<div data-d-m01>text</div>
<div data-d-whatever>content</div>
<div test-data-d-whatever>and</div>
<div d-whatever>more</div>
<div testdata-d-whatever>...</div>
使用ES6+
,您可以使用排列运算符(...
),然后过滤那些属性名称以data-d-
:开头的元素
var res = [...document.querySelectorAll("*")]
.filter(t => [...t.attributes]
.filter(({ name }) => name.startsWith("data-d-")).length > 0)
console.log(res);
<div data-d-9y3x>Some</div>
<div data-d-m01>text</div>
<div data-d-whatever>content</div>
<div test-data-d-whatever>and</div>
<div d-whatever>more</div>
<div testdata-d-whatever>...</div>
@Alireza_Ahmadi的答案非常好,可以扩展到使用主节点选择器精确地针对合格属性。。。
具有专用属性的jQ的标准选择器为:jQuery('[role="field-form"]')
var res = [...(jQuery('[role="field-form"]').get())]
.filter(t => [...t.attributes]
.filter(({ name }) => name.startsWith("formula_")).length > 0)
相关文章:
- 从第一个日期选择器定义第二个日期选择器的开始日期
- 基础日期选择器、结束日期(和时间)不能早于开始日期(和时间)
- 结束日期作为基础日期时间选择器中的选定开始日期
- 剑道日期选择器选择日期应从年开始
- 角度引导日期选择器开始日期函数
- 如何从开始日期中的单独字段添加天数/周,以在日期选择器中获取结束日期
- 具有自定义开始日期的日期选择器
- 我如何采用两个日期选择器并使用我的开始和结束日期对数据进行排序,但 json 数据包含 5/12/2016,而角度仅排序
- 在引导程序的日期选择器上设置“开始日期”
- 无法使用日期选择器禁用从今天开始的日期
- 默认情况下,日期选择器从下一个可用月份开始
- 使用日期选择器根据开始日期设置结束日期
- 如何在React日期范围选择器中获取开始和结束日期值
- CSS选择器按属性匹配元素's的名称开始
- 更改Jquery日期选择器ShowWeek的开始周
- Yii引导日期选择器行中的结束日期应大于开始日期
- Twitter引导程序日期选择器-开始日期小于结束日期
- 如何获取日期和时间范围选择器的开始和结束
- 如何使用Javascript AngularJS从日期选择器中的当前日期开始
- 如何使用引导日期选择器提前一天显示开始日期