首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有边界条件的querySelectorAll

具有边界条件的querySelectorAll
EN

Stack Overflow用户
提问于 2017-04-28 03:33:16
回答 1查看 1.2K关注 0票数 3

document.querySelectorAll可用于定位具有特定数据属性值的文档元素。例如

代码语言:javascript
复制
alert(document.querySelectorAll(".dk[data-kind='3']").length);
alert(document.querySelectorAll(".dk[data-kind>'3']").length);
代码语言:javascript
复制
<div class='dk' data-kind='2'>A</div>
<div class='dk' data-kind='3'>B</div>
<div class='dk' data-kind='4'>C</div>

但是,据我所知,不可能定义使用诸如data-kind>"3"之类的不平等的选择器--在这里运行代码片段并尝试使用边界/不等式选择器的querySelectorAll会抛出一个错误。

jQuery提供了做这些事情的机制,尽管牺牲了在处理移动设备时相当重要的性能。

提取所有data-kind元素,然后根据边界条件测试它们的kind数据是一件很简单的事情,但我想知道……-也许有一种方法可以为querySelectorAll编写一个我不知道的聪明的查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 03:45:33

您可以使用querySelectorAll获取所有具有data-kind属性的元素。以及满足一定条件的滤波元件。

代码语言:javascript
复制
Array.from(document.querySelectorAll(".dk[data-kind]"))

此语句将选择具有dk类和data-kind属性的所有元素。Array.from将将集合转换为Array,以便可以直接在其上使用数组函数。

代码语言:javascript
复制
.filter(el => Number(el.dataset.kind) > 3)

此过滤器将过滤data-kind属性值大于3的元素。

代码语言:javascript
复制
var els = Array.from(document.querySelectorAll(".dk[data-kind]")).filter(el => Number(el.dataset.kind) > 3);
console.log(els);
console.log(els.length);
代码语言:javascript
复制
<div class='dk' data-kind='2'>A</div>
<div class='dk' data-kind='3'>B</div>
<div class='dk' data-kind='4'>C</div>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43671530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档