Имеет ли jQuery структуру изменяемых данных типа hashtable? - PullRequest
5 голосов
/ 03 мая 2011

Псевдокод - это, вероятно, лучший способ показать, что я собираюсь сделать в jQuery:

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

Потом ... ссылаться на структуру

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

Любойпредложения о том, как я могу это сделать?

Ответы [ 2 ]

8 голосов
/ 03 мая 2011

jQuery - это просто JavaScript, а в JavaScript есть объекты. Вы можете использовать объекты JS аналогично карте C ++ или C # Dictionary. Например, вы можете создать массив объектов и иметь индексы, которые вы можете назвать:

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;
}
1 голос
/ 03 мая 2011

Фактически вы можете прикрепить данные к элементу jquery, используя data api

Итак, сделайте что-нибудь в строках:

$(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 */
}

, а затем просто получить его из каждого элемента jquery!

$(selector).data()

или

$(selector).data('imgURL')

Это для присоединения «хеш-таблицы» к элементу.

В javascript у вас есть «ассоциативные массивы» (хеш-таблицы).

Вы можете написать их как: myarray = {key:'value'}

и вы можете получить к ним доступ как:

myarray['attribute'] или myarray.attribute, как вы предпочитаете

PS. пожалуйста, обратите внимание, что я не тестировал код там, это может потребовать незначительных настроек

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...