首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在没有json的情况下从jquery数据属性中获取对象名值

如何在没有json的情况下从jquery数据属性中获取对象名值
EN

Stack Overflow用户
提问于 2020-05-20 11:30:35
回答 2查看 36关注 0票数 0

我可以通过jquery获取数据属性信息,如下所示:

代码语言:javascript
运行
复制
<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
});

但是我需要像这样使用这些信息数据:(我猜像是数组对象?)

代码语言:javascript
运行
复制
color = info["color"];
device = info["device"];
fruit = info["fruit"];

alert ("color: "+color+" device: "+device+" fruit: "+fruit);

下面的例子是我所需要的:

代码语言:javascript
运行
复制
info = {color:"blue", device:"tablet", fruit:"apple"};
color = info["color"];
alert("color: "+color);
//color: blue

因此,我尝试了这样做;(但我得到了未定义的错误)

代码语言:javascript
运行
复制
<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"},如果可能的话,也可以不使用{和}字符。

我为我糟糕的英语感到抱歉,如果我使用了错误的标题或问题描述,您可以修改它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-20 11:48:37

如果值很简单并且不包含嵌套对象,则可以使用以下代码:

代码语言:javascript
运行
复制
$("#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);
});
代码语言:javascript
运行
复制
<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-*属性来存储对象。

票数 0
EN

Stack Overflow用户

发布于 2020-05-20 12:29:32

尝试以下代码:

代码语言:javascript
运行
复制
$("#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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61904607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档