2010-03-01 14 views
21

J'ai cette liste des vignettes et voudrais pousser les chemins d'image (sources) dans un tableau: tn_arrayjQuery get source img attributs de liste et appuyez dans un tableau

<ul id="thumbnails"> 
    <li><img src="somepath/tn/004.jpg" alt="fourth caption" /></a></li> 
    <li><img src="somepath/tn/005.jpg" alt="fifth caption" /></a></li> 
    <li><img src="somepath/tn/006.jpg" alt="sixth caption" /></a></li> 
</ul> 

Répondre

48

Vous pouvez créer le tableau d'attributs src plus en utilisant directement map():

var tn_array = $("#thumbnails img").map(function() { 
    return $(this).attr("src"); 
}); 

Edit:tn_array est un objet ici plutôt que d'un ensemble strict Javascript, mais il agira comme un tableau. Par exemple, ce code est légal:

for (int i=0; i<tn_array.length; i++) { 
    alert(tn_array[i]); 
} 

Vous pouvez cependant appeler get(), qui fera une gamme stricte:

Comment dites-vous la différence? Appel:

alert(obj.constructor.toString()); 

La première version sera:

function Object() { [native code] } 

La seconde:

function Array() { [native code] } 
+0

doux! merci beaucoup :) – FFish

+0

Oui, merci +1. Je cherchais une technique similaire pour obtenir un tableau de val(). Genre de surprenant jquery n'a rien de construit pour ça. On dirait un ergot, mais c'est, après tout, la bibliothèque "write less". :) – harpo

+0

Rappelez-vous aussi que si vous voulez un tableau réel, vous devez appeler .get() sur le résultat de .map(). – harpo

5

Vous pouvez parcourir jamais élément img:

var tn_array = Array(); 

$('#thumbnails img').each(function() { 
    tn_array.push($(this).attr('src')); 
});