2017-02-22 66 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」)調用返回的集合中的每個元素。 – guest271314

相關問題