具有边界条件的 querySelectorAll
querySelectorAll with boundary conditions
document.querySelectorAll
可用于定位具有特定数据属性值的文档元素。例如
alert(document.querySelectorAll(".dk[data-kind='3']").length);
alert(document.querySelectorAll(".dk[data-kind>'3']").length);
<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
与 boundary/inequality 选择器抛出错误。
jQuery 提供了执行此类操作的机制,尽管以牺牲性能为代价,这在处理移动设备时非常重要。
提取所有 data-kind
元素然后测试它们的 kind
数据的边界条件是一件微不足道的事情,但我想知道...... - 也许有一种方法可以写一个我不知道的 querySelectorAll
的巧妙查询?
您可以使用querySelectorAll
获取所有具有data-kind
属性的元素。并过滤满足一定条件的元素。
Array.from(document.querySelectorAll(".dk[data-kind]"))
此语句将select所有具有dk
class和data-kind
属性的元素。 Array.from
将集合转换为数组,以便可以直接在其上使用数组函数。
.filter(el => Number(el.dataset.kind) > 3)
此过滤器将过滤 data-kind
属性值大于 3 的元素。
var els = Array.from(document.querySelectorAll(".dk[data-kind]")).filter(el => Number(el.dataset.kind) > 3);
console.log(els);
console.log(els.length);
<div class='dk' data-kind='2'>A</div>
<div class='dk' data-kind='3'>B</div>
<div class='dk' data-kind='4'>C</div>
document.querySelectorAll
可用于定位具有特定数据属性值的文档元素。例如
alert(document.querySelectorAll(".dk[data-kind='3']").length);
alert(document.querySelectorAll(".dk[data-kind>'3']").length);
<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
与 boundary/inequality 选择器抛出错误。
jQuery 提供了执行此类操作的机制,尽管以牺牲性能为代价,这在处理移动设备时非常重要。
提取所有 data-kind
元素然后测试它们的 kind
数据的边界条件是一件微不足道的事情,但我想知道...... - 也许有一种方法可以写一个我不知道的 querySelectorAll
的巧妙查询?
您可以使用querySelectorAll
获取所有具有data-kind
属性的元素。并过滤满足一定条件的元素。
Array.from(document.querySelectorAll(".dk[data-kind]"))
此语句将select所有具有dk
class和data-kind
属性的元素。 Array.from
将集合转换为数组,以便可以直接在其上使用数组函数。
.filter(el => Number(el.dataset.kind) > 3)
此过滤器将过滤 data-kind
属性值大于 3 的元素。
var els = Array.from(document.querySelectorAll(".dk[data-kind]")).filter(el => Number(el.dataset.kind) > 3);
console.log(els);
console.log(els.length);
<div class='dk' data-kind='2'>A</div>
<div class='dk' data-kind='3'>B</div>
<div class='dk' data-kind='4'>C</div>