2017-02-22 24 views
0

для данного HTML:отображать массив в текст элементов, используя jQuery.each внутри цикла for?

<div id="parent"> 
    <div class="child">x</div> 
    <div class="child">y</div> 
    <div class="child">z</div> 
</div> 

Как я могу отобразить текст своих детей из массива?

Это моя попытка:

var myArray = ['a', 'b', 'c']; 

for (var i = -1; i < myArray.length; i++) { 
    $('#parent .child').each(function() { 
     $(this).text(myArray[i]); 
    }); 
} 

я получаю: c,c,c

Как я могу получить a,b,c?

ответ

3

Вам не нужен внешний for цикл:

var myArray = ['a', 'b', 'c']; 

$('#parent .child').each(function (index) { 
    $(this).text(myArray[index]); 
}); 
+0

Спасибо! Я ценю это! – user7607751

2

Там нет необходимости использовать for цикл здесь.

var myArray = ['a', 'b', 'c']; 
 

 
$('#parent').find('div').each(function(){ 
 
    $(this).html(myArray[$(this).index()]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div class="child">x</div> 
 
    <div class="child">y</div> 
 
    <div class="child">z</div> 
 
</div>

+0

'each' уже предоставляет необязательный параметр для обратного вызова, который является индексом! –

+0

@ibrahimmahrir Я видел его внутри ответа флориана. Это просто другой способ решить эту проблему. И, кстати, было бы несправедливо, если бы я скопировал и вставил решение флорие. –

+0

Если лучший ответ уже спровоцирован, вы можете просто уйти и не отвечать! –

2

Использование .text(function)

var myArray = ['a', 'b', 'c']; 
 
$("#parent > .child").text(function(index) { 
 
    return myArray[index] 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script> 
 
<div id="parent"> 
 
    <div class="child">x</div> 
 
    <div class="child">y</div> 
 
    <div class="child">z</div> 
 
</div>

+0

Спасибо! Я ценю это! – user7607751

+0

@null Примечание. '.each()' не обязательно возвращать ожидаемый результат. Первый параметр '.text (function (index, existingText) {})' callback - это индекс текущего элемента в коллекции 'jQuery()'. '.text()' итерирует каждый элемент в коллекции, возвращаемый '$ (" # parent> .child ")' call. – guest271314