我可以通过jquery获取数据属性信息,如下所示:
<div id="test" data-info="color:blue,device:tablet,fruit:apple">click me</div>
$("#test").click(function(e){
var info = $(this).data("info");
alert("info: "+info);
//info: color:blue,device:tablet,fruit:apple
});
但是我需要像这样使用这些信息数据:(我猜像是数组对象?)
color = info["color"];
device = info["device"];
fruit = info["fruit"];
alert ("color: "+color+" device: "+device+" fruit: "+fruit);
下面的例子是我所需要的:
info = {color:"blue", device:"tablet", fruit:"apple"};
color = info["color"];
alert("color: "+color);
//color: blue
因此,我尝试了这样做;(但我得到了未定义的错误)
<div id="test" data-info="{color:"blue", device:"tablet", fruit:"apple"}">click me</div>
$("#test").click(function(e){
var info = $(this).data("info");
color = info["color"];
alert("color: "+color); //color: undefined
});
我该怎么做呢?
请注意:我不想使用json数据,我需要像这样保留普通的数据信息区域:{color:"blue", device:"tablet", fruit:"apple"}
,如果可能的话,也可以不使用{和}字符。
我为我糟糕的英语感到抱歉,如果我使用了错误的标题或问题描述,您可以修改它。
发布于 2020-05-20 11:48:37
如果值很简单并且不包含嵌套对象,则可以使用以下代码:
$("#test").click(function(e) {
let info = $(this).data("info");
let object = {};
info.split(",").forEach((elem) => {
const el = elem.split(":");
object[el[0]] = el[1];
})
console.log(object);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test" data-info="color:blue,device:tablet,fruit:apple">click me</div>
或者您可以使用.data()
方法而不是data-*属性来存储对象。
发布于 2020-05-20 12:29:32
尝试以下代码:
$("#test").click(function(e){
var dat = $(this).data("info").split(',');
var info = {};
$.each( dat, function(index,value){
var p = value.split(':');
info[p[0]]=p[1];
});
console.log(info['color']);
});
这是jsfiddle:https://jsfiddle.net/pcnzLeyf/4/
https://stackoverflow.com/questions/61904607
复制相似问题