首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将数组传递到jQuery .data()属性

如何将数组传递到jQuery .data()属性
EN

Stack Overflow用户
提问于 2011-05-20 20:03:14
回答 4查看 92.7K关注 0票数 88

好的,我想把一个非常基本的数组传递给一个jquery data attrubute服务器端,像这样:

<div data-stuff="['a','b','c']"></div>

然后像这样检索:

var stuff = $('div').data('stuff');

alert(stuff[0]);

为什么这显示为警告'[‘而不是'a’(参见JSfiddle链接)

JSFiddle链接: http://jsfiddle.net/ktw4v/3/

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-20 20:07:41

它将您的变量视为字符串,其第零个元素是[

这是因为您的字符串不是valid JSON,它应该使用双引号而不是单引号作为字符串分隔符。然后,您必须使用单引号来分隔整个属性值。

如果你修改了引号,你的原始代码就能正常工作(参见http://jsfiddle.net/ktw4v/12/)

<div data-stuff='["a","b","c"]'> </div>

var stuff = $('div').data('stuff');

当jQuery在数据属性中看到有效的JSON时,它将执行automatically unpack it for you

票数 147
EN

Stack Overflow用户

发布于 2011-05-20 20:09:08

将其声明为属性意味着它是一个字符串。

因此,stuff[0]等同于:var myString = "['a','b','c']"; alert(myString[0]);

你需要让它看起来像这样:

<div data-stuff="a,b,c"></div>

var stuff = $('div').data('stuff').split(',');
alert(stuff[0]);

撤回:jQuery的解析失败,因为它不符合parseJSON的规则。

然而,我将支持我的解决方案。其他解决方案的某些方面不太理想,就像这个解决方案在某些方面不太理想一样。一切都取决于你的范例是什么。

票数 15
EN

Stack Overflow用户

发布于 2011-05-20 20:23:01

由于其他人已经识别出该值被视为字符串,因此它返回"[“。请尝试这个(aaa是div的名称,我去掉了数据):

$(function(){
    $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']});
    var stuff = $.data($("#aaa")[0],"stuff").aa;
    alert(stuff[0]); //returns "a"
});
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6071618

复制
相关文章

相似问题

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