2010-09-17 74 views
0

我将元素的值保存为元素的属性,但我无法将属性值作为数组获取,它是字符串。如何使用jQuery获取数组的属性值

我怎样才能得到它作为一个数组?

我将为此问题添加代码。

谢谢。

代码:

<table columnArray="">.....</table> 
var columns = $('table > thead > tr > *').map(function(){return {left: $(this).position().left, width: $(this).width()};}); 
$('table').attr('columnArray', columns.get()); 
... 
... 
var columns = $(table).attr('columnArray'); 

现在列变量具有字符串值,而不是阵列。

+0

没有'columnArray'属性,如果有的话,因为它会是HTML,它的值将是一个字符串......它看起来像是混淆了JS变量和HTML标记。 – 2010-09-17 19:47:37

回答

1

也许你想用data函数来代替。

$('#el').data('myArray',[1,2,3]); 
var myArray = $('#el').data('myArray'); // [1,2,3] 
+0

谢谢你的快速回答。所以属性不能保存这样的海量数据,对吧? – 2010-09-17 19:48:47

+0

@Jason - 属性的值不能是数组。它只能是一个字符串。它*可能*是一个表示数组的字符串,但这会变得非常黑客。 – 2010-09-17 19:54:02

+0

@Jason加入Peter的回复。所有的属性在设计时都考虑到了HTML规范的特殊用例,因此它们所能容纳的内容是有限的。 HTML5数据属性是“允许”创建属性的唯一实例。如果我只是使用无效的属性“asd”,因为它不是由HTML规范指定的。但是,数据函数将允许任何事情,因为它是一个伪解决方案。 – balupton 2010-09-17 20:02:02

0

看起来你很混乱的HTML标记和Javascript变量。

一旦你存储阵列,它会在你的JavaScript提供给您:

<table>.....</table> 

在你seprate JS文件:

var columns = $('table > thead > tr > *').map(function(){ 
    return { 
     left: $(this).position().left, 
     width: $(this).width() 
    }; 
}); 

// You can now use columns in this scope. 
2
array = $("your selector").attr("your attribute").split(","); 
// "abc,def,ghi" gets ["abc", "def", "ghi"]