2012-08-31 146 views
0

我不使用Javascript/jQuery的的重度使用者,但我開始真正進入創造我自己的用戶界面的東西,如畫廊瀏覽器,警報動畫,彈出形式等等存儲數據以使用jQuery的最佳方式是什麼?

但是,什麼是最好的存儲數據以便在需要時一起拉動的方式?

例如: 隨着畫廊查看器,很像燈箱,我拉入有rel =查看器錨的href。

<a href="url" rel=viewer" /> 
<a href="url" rel=viewer" /> 

然後,我擴大了這爲管理員用戶能夠刪除這些圖像,但我需要通過媒體ID來做到這一點。所以我補充說...

<a href="url" rel=viewer" viewerid="123" /> 
<a href="url" rel=viewer" viewerid="456" /> 

我不喜歡創建自己的屬性的想法,因爲我無疑會忘記我擁有的。但是有可能在一個錨點中存儲一個JavaScript對象/數據數組?喜歡的東西...

<a href="url" rel=viewer" data="{'id':'123', 'foo':'bar'}" /> 

然後......

var photos = new Array(); 
$('a[rel=viewer]').each(function(){ 
    photos.push( new Array($(this).attr('data')) ); 
}); 

給我像

photos[0] = array('id' => 123, 'foo' => 'bar') 
photos[1] = array('id' => 456, 'foo' => 'bar') 
+1

正如旁白 - AFAIK自定義屬性是無效的HTML;雖然它可能在大多數瀏覽器上工作,但可能會導致舊瀏覽器崩潰。您可以使用HTML5中有效的'data-myVar =「someValue」'語法。 – jammypeach

回答

2

,因爲我知道里面的標籤數據已經被命名爲?有效語法是

<a href="url" rel=viewer" data-array="{'id':'123', 'foo':'bar'}" /> 

,你以後喜歡,可以讀取它:

$('a').data('array') 
+0

謝謝你的解決方案。我不得不改變引號,但後來工作了... data-array ='{「foo」:「bar」}' –

+0

並且您可以擁有儘可能多的數據名稱。像數據ID,數據名稱等... –

+0

數據陣列有多可靠? –

2

試試這個jQuery.data

jQuery.data(document.body, 'foo', 52); 
jQuery.data(document.body, 'bar', 'test'); 
0

對於簡單的目的,我會用custom data attributes,這是非常有效的HTML5堅持。

如果您需要更深入的方法,您最好從DOM /jQuery.data中分離數據,並在您的應用程序中使用合適的模型層[想想Backbone.js],雖然它意味着一點點艱苦的學習曲線,可能會有時過度殺傷。

0

我發現最好的方法是使用HTML5數據屬性和jQuery。

這是一個example使用JSON將對象串聯起來,並在您需要數據時將其轉回對象。

var obj = 
{ 
    type: "something", 
    id: 3, 
    src: "somesrc"  
} 

var data = JSON.stringify(obj); 
$('a').attr('data-object', data); 

var returned = $('a').attr('data-object'); 
returned = $.parseJSON(returned); 
console.log(returned); 

相關問題