Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要获取所有数据属性&;类值键:ul li的值对_Javascript_Jquery - Fatal编程技术网

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(此)&获得结果。现在我明白你的意思了。看看