Javascript 我需要获取所有数据属性&;类值键:ul li的值对
我有一个Javascript 我需要获取所有数据属性&;类值键:ul li的值对,javascript,jquery,Javascript,Jquery,我有一个ul标签,标签上几乎没有li元素。每个li都有一些数据属性 <ul id="elements"> <li id="mtq" data-id="1" data-name="abc">test 1</li> <li data-id="2">test 2</li> <li data-id="3" data-name="xyz">test 3</li> <li data-id="4" data-name="
ul
标签,标签上几乎没有li
元素。每个li
都有一些数据属性
<ul id="elements">
<li id="mtq" data-id="1" data-name="abc">test 1</li>
<li data-id="2">test 2</li>
<li data-id="3" data-name="xyz">test 3</li>
<li data-id="4" data-name="pqr">test 4</li>
<li data-id="5" data-type="text">test 5</li>
<li data-id="7">test 6</li>
</ul>
这是我的名片
当我按ID选择一个
li
,它会给出答案。我的脚本出了什么问题?您可以使用数据集
HtmleElement.dataset属性允许在读和写操作中进行访问
写入模式,写入到上设置的所有自定义数据属性(data-*)
元素,无论是在HTML中还是在DOM中
检查代码段:
$(函数(){
让结果=$(“#元素>li”).map(函数(){
设o=这个;
return Object.keys(o.dataset).reduce(函数(c,v){c[v]=o.dataset[v];return c;},{})
}).get();
控制台日志(结果);
});代码>
测试1
- 测试2
测试3
测试4
测试5
- 测试6
您只需使用数据集
HtmleElement.dataset属性允许在读和写操作中进行访问
写入模式,写入到上设置的所有自定义数据属性(data-*)
元素,无论是在HTML中还是在DOM中
检查代码段:
$(函数(){
让结果=$(“#元素>li”).map(函数(){
设o=这个;
return Object.keys(o.dataset).reduce(函数(c,v){c[v]=o.dataset[v];return c;},{})
}).get();
控制台日志(结果);
});代码>
测试1
- 测试2
测试3
测试4
测试5
- 测试6
您过度考虑了getDataAttributes
,您可以在el
中获取数据集,该数据集已经具有您所需的内容
function getDataAttributes(el) {
if(el[0] && el[0].dataset) {
return Object.assign({}, el[0].dataset);
}
return {};
}
el[0].dataset
将返回一个DOMStringMap
,这就是为什么我使用对象。assing
将其转换为普通对象
希望这对您有所帮助。您过度考虑了getDataAttributes
,您可以在el
中获取数据集,该数据集已经具备您所需的功能
function getDataAttributes(el) {
if(el[0] && el[0].dataset) {
return Object.assign({}, el[0].dataset);
}
return {};
}
el[0].dataset
将返回一个DOMStringMap
,这就是为什么我使用对象。assing
将其转换为普通对象
希望这对您有所帮助。您可以使用$(elem).data()
获取所有数据属性和键
$(函数(){
var结果=[];
$('#elements li')。每个(函数(i,e){
var data=$(this.data();
如果(Object.keys(data.length){//obj(data)是否为空
var temp={};
for(var输入数据){
温度[键]=数据[键];
}
结果:推送(温度);
}
});
控制台日志(结果);
});代码>
测试1
- 测试2
测试3
测试4
测试5
- 测试6
- 没有数据示例
您可以使用$(elem).data()
获取所有数据属性和键
$(函数(){
var结果=[];
$('#elements li')。每个(函数(i,e){
var data=$(this.data();
如果(Object.keys(data.length){//obj(data)是否为空
var temp={};
for(var输入数据){
温度[键]=数据[键];
}
结果:推送(温度);
}
});
控制台日志(结果);
});代码>
测试1
- 测试2
测试3
测试4
测试5
- 测试6
- 没有数据示例
使用以下代码
$("#hello").click( function (e) {
$("ul#elements li").each(function() {
var data = $(this).data()
console.log(data);
});
});
我希望这有帮助 使用下面的代码
$("#hello").click( function (e) {
$("ul#elements li").each(function() {
var data = $(this).data()
console.log(data);
});
});
我希望这有帮助 el.attributes
-您试图在此处访问DOM元素属性,但el
是一个jQuery对象。只需将DOM元素传递到函数中,以@CBroe的副本开始,getDataAttributes(this)
replicate,说真的,我不知道$(this)
&this
之间的区别。但是在阅读了你的评论之后,我已经搜索了&刚刚更新了我的代码<代码>var数据=getDataAttributes(此)代码>&获得结果。现在我明白你的意思了。请查看el.attributes
-你试图在这里访问DOM元素属性,但是el
是一个jQuery对象。只需将DOM元素传递到函数中,以@CBroe的副本开始,getDataAttributes(this)
replicate,说真的,我不知道$(this)
&this
之间的区别。但是在阅读了你的评论之后,我已经搜索了&刚刚更新了我的代码<代码>var数据=getDataAttributes(此)代码>&获得结果。现在我明白你的意思了。看看