Select 基于匹配部分的数据属性
Select data attribute based on matching part
如何 select 像这样的元素中以 data-size-
开头的所有数据属性
<div class="el" data-name="str" data-size-100="str" data-size-158="str" data-size-304="str">str</div>
我正在尝试做类似的事情,但无法弄清楚:
$('.el').attr('[data-size-*]')
你可以通过dataset
实现
var data = $('.el')[0].dataset;
var attrs = Object.keys(data).reduce(function(a,b){
if(b.startsWith("size")){ a.push(data[b]); }
return a;
},[]);
console.log(attrs); \ ["str","str","str"]
这里我使用了startsWith
来判断data-'key'是否以特定的子字符串开头。另外reduce
就是根据我们已有的条件,将原来的key数组缩减为一个新的数组
DEMO
这个 returns 一个包含包含名称和值的对象的数组。
var myDiv = document.getElementsByClassName("el")[0],
dataSizeAttrs = [];
Array.prototype.forEach.call(myDiv.attributes, e =>
/data-size/.test(e.nodeName) && dataSizeAttrs.push({name : e.nodeName,
value: e.nodeValue}) );
如何 select 像这样的元素中以 data-size-
开头的所有数据属性
<div class="el" data-name="str" data-size-100="str" data-size-158="str" data-size-304="str">str</div>
我正在尝试做类似的事情,但无法弄清楚:
$('.el').attr('[data-size-*]')
你可以通过dataset
var data = $('.el')[0].dataset;
var attrs = Object.keys(data).reduce(function(a,b){
if(b.startsWith("size")){ a.push(data[b]); }
return a;
},[]);
console.log(attrs); \ ["str","str","str"]
这里我使用了startsWith
来判断data-'key'是否以特定的子字符串开头。另外reduce
就是根据我们已有的条件,将原来的key数组缩减为一个新的数组
DEMO
这个 returns 一个包含包含名称和值的对象的数组。
var myDiv = document.getElementsByClassName("el")[0],
dataSizeAttrs = [];
Array.prototype.forEach.call(myDiv.attributes, e =>
/data-size/.test(e.nodeName) && dataSizeAttrs.push({name : e.nodeName,
value: e.nodeValue}) );