我正在尝试使用$.each()
迭代一些div更改文本。
文本在一个数组中,我想要做的是为包含在父级中的每个div更改它。
在我现在的代码中,它只打印最后一个数组条目。
这是代码:
parent=$(".parent");
array = ['one','two','three','four','five','six'];
$.each( array, function( i, val ) {
$( ".parent div" ).text(val);
});
这是一个可以更好地解释我的问题的例子:
http://codepen.io/anon/pen/XbGXeL?editors=101
感谢您的帮助。
答案 0 :(得分:2)
请参阅http://codepen.io/anon/pen/XbGXzv?editors=101
$.each( array, function( i, val ) {
$( ".parent div" ).eq(i).text(val);
});
您可以使用eq使用索引选择元素。假设数组长度与div计数匹配。
答案 1 :(得分:1)
试试这个:
parent = $(".parent");
array = ['one', 'two', 'three', 'four', 'five', 'six'];
$.each(array, function (i, val) {
console.log(i, val)
$(".parent div:eq(" + i + ")").text(val);
});
演示:http://codepen.io/anon/pen/LVaGeN?editors=101
关于eq:使用jquery选择器时,它返回一个与css选择器匹配的元素数组。因此,为了访问数组中的特定元素,您需要使用索引。而eq或get就是这样做的。
答案 2 :(得分:0)
jQuery text()方法接受函数作为参数,使用它:
$( ".parent div" ).text(function(i){
return array[i];
});
答案 3 :(得分:0)
您使用的选择器,即$(".parent div")
适用于div
.parent
的孩子的任何div
。
这意味着在每次迭代时,.each()
方法首先查找您指定的过滤器(即任何子div)并将文本插入div(在本例中为所有div)。最后,您将剩下最后一个array
值插入到所有div中。
尝试其他答案中指定的方法,或者这样:
parent=$(".parent");
array = ['one','two','three','four','five','six'];
$.each( parent.children('div'), function( i, div ) {
$( div ).text(array[i]);
});