2011-05-03 4 views
5

Sözde kod muhtemelen jQuery'de ne yapmak istediğimi göstermenin en iyi yoludur:JQuery'nin hashtable tipi değişken bir veri yapısı var mı?

$(selector).each(function() { 
    // pull data from LI tags or whatever, store in variables (imgURL, tagline, summary) 
    $someDataStructure.add({imgURL, tagline, summary}); 
}); 

Daha sonra ... yapıya bir bakın

 $someDataStructure.each(function() { 
    var x = $someDataStructure['imgURL']; 
    // etc. 
}); 

Nasıl gidebileceğime dair herhangi bir öneri bunu yapmaktan mı?

cevap

8

jQuery sadece JavaScript aracına sahip ve JavaScript'in nesneleri vardır. JS Nesneleri bir C++ haritasına veya C# Dictionary'e benzer şekilde kullanabilirsiniz. Örneğin, nesneler dizisi oluşturabilir ve adlandırabilirsiniz indeksleri olabilir: Daha sonra Sonra

var liTags = []; 

$(selector).each(function() { 
    // pull data from LI tags or whatever 
    //store in variables (imgURL, tagline, summary) 
    liTags.push({'imgURL': imgURL, 'tagline': tagline, 'summary': summary}); 
}); 

:

for(int i = 0; i < liTags.length; ++i) { 
    var imgURL = liTags[i]['imgURL']; //or liTags[i].imgURL; 
} 
+0

@Chad Teknik olarak, bu sadece JavaScript ilişkilendirici dizileri, JSON değil, doğru mu? :) – bzlm

+1

Teknik olarak, JSON (JavaScript Object Notation), _derived from_ (ve hemen hemen aynı) Javascript'in yerel nesne bildirim sözdizimi olan bağımsız bir formattır. –

+0

Oh, ve aslında buna nesne denir. "İlişkilendirilmiş dizi", diğer bazı dillerle karşılaştırmalara dayanan bir konuşma dilidir. –

1

Aslında data api

kullanarak bir jquery elemana verileri ekleyebilir

Yani satırlarında bir şey yapmak:

$(selector).each(function() { 
    /* I suppose here you have three available variables named: 
     imgURL, tagline, summary 
     that you got from the element itself or from somewhere else 
    */ 
    $(this).data({imgURL: imgURL, tagline: tagline, summary:summary }) 
    /* you could also write it {'imgURL': imgURL, etc. } if it looks clearer: the first is the hashtable key, the second a variable containing the value */ 
} 

ve sonra sadece almak her jquery elemanından!

$(selector).data() 

veya bir öğeye bir 'hashtable' bağlanması için var

$(selector).data('imgURL') 

. Javascript'te 'birleştirici diziler' (hashtables) var demektir.

Onları yazabilir olarak: myarray = {key:'value'}

ve siz erişebilirsiniz:

myarray['attribute'] veya

PS tercih olarak myarray.attribute. Kodu orada test etmediğimi lütfen unutmayın, bazı küçük ince ayarlamalar gerektirebilir

+0

$ .data() is cool, ama ben herhangi bir yol göremiyorum "itme" nesnelerinin içine. Bir grup DIV'den geçiyorum ve veri çekiyorum, bir listeye/diziye bir şeyler eklemeye devam etmenin bir yoluna ihtiyacım var. – CaptSaltyJack

+0

@CaptSaltyJack: '{imgURL, tagline, summary}' sanırım sözde koddur? lütfen benim düzenlememi kontrol et ve bana ne demek istediğini söylesin ... – Stefano

+0

Oh Gördüğün gibi, veriyi döngüdeki her bir öğeye bağlıyorsun, yani bir anlamda bir yığına bastın. Anladım. Hmm .. ne yazık ki hala ihtiyacım olan şey için işe yaramıyor, çünkü veri topladığımda seçmenleri yok edebilirdim. Bu durumda gerçekten ihtiyacım olan şey $ .data(). – CaptSaltyJack