好的,所以我想将一个非常基本的数组传递到jquery数据attrubute服务器端,如下所示:
<div data-stuff="['a','b','c']"></div>
然后像这样回撤:
var stuff = $('div').data('stuff');
alert(stuff[0]);
为什么这似乎会警告'['而不是'a'(请参阅JSfiddle链接)
JSFiddle链接: http : //jsfiddle.net/ktw4v/3/
好的,所以我想将一个非常基本的数组传递到jquery数据attrubute服务器端,如下所示:
<div data-stuff="['a','b','c']"></div>
然后像这样回撤:
var stuff = $('div').data('stuff');
alert(stuff[0]);
为什么这似乎会警告'['而不是'a'(请参阅JSfiddle链接)
JSFiddle链接: http : //jsfiddle.net/ktw4v/3/
Answers:
它将变量视为字符串,其第零个元素为[
。
发生这种情况是因为您的字符串不是有效的JSON,它应使用双引号作为字符串定界符而不是单引号。然后,您必须使用单引号分隔整个属性值。
如果您修改了引号,则原始代码有效(请参见http://jsfiddle.net/ktw4v/12/)
<div data-stuff='["a","b","c"]'> </div>
var stuff = $('div').data('stuff');
当jQuery在data属性中看到有效的JSON时,它将自动为您解压缩。
将其声明为属性意味着它是一个字符串。
因此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的规则。
但是,我将支持我的解决方案。其他方面存在一些不理想的方面,就像该解决方案在某些方面不理想一样。一切都取决于您的范例。