Vraag jQuery krijgt img bronattributen uit lijst en push in array


Ik heb deze miniaturenlijst en zou graag de afbeeldingspaden (bronnen) in een array willen duwen: tn_array

<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>

21
2018-03-01 10:08


oorsprong


antwoorden:


U kunt de array van src-attributen directer maken met behulp van map():

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

Bewerk:  tn_array is hier een object in plaats van een strikte Javascript-array, maar het zal fungeren als een array. Dit is bijvoorbeeld een wettelijke code:

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

U kunt echter bellen get(), wat het een strikte array zal maken:

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

Hoe vertel je het verschil? Oproep:

alert(obj.constructor.toString());

De eerste versie zal zijn:

function Object() { [native code] }

De seconde:

function Array() { [native code] }

48
2018-03-01 10:11



Je kunt ooit doorlopen img element:

var tn_array = Array();

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

5
2018-03-01 10:13