2010-09-17 72 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"]