提问人:Andrew Humphries 提问时间:7/3/2019 最后编辑:Rob KwasowskiAndrew Humphries 更新时间:7/3/2019 访问量:315
jQuery循环只返回数组的最后一个元素
jQuery loop is only returning the last element of an array
问:
我只收到我正在循环的数组的最后一个元素,该元素位于函数中。
我已经尝试了基本的 for 循环和 forEach 循环,但没有任何效果。
(function(d,$){
let titles = ["foo", "bar", "baz", "bop"]
$('li').forEach((ele, i)=>{
$("li").attr('titles', `i am ${titles[i]}`)
})
})(dojo, dojo.query);
DOM 中的每个都应该有一个唯一的标题,第一个应该是 foo,第二个应该是 bar,依此类推。li
目前,所有的标题都是 bop。li
答:
0赞
Akhilesh
7/3/2019
#1
只要改变你forEach循环,
$('li').each((i, elm)=>{
$(this).attr('titles', `i am ${titles[i]}`);
});
0赞
Andrew Humphries
7/3/2019
#2
我想通了。
(function(d,$){
let titles = ["foo", "bar", "baz", "bop"]
titles.forEach((ele, i)=>{
$(`li.${titles[i]}`).attr('titles', `i am ${titles[i]}`)
})
})(dojo, dojo.query);
问题是我每次循环时都设置了每个 li。因此,我只是遍历我创建的数组,并使用插值设置目标和消息。
评论
$('li').attr()
影响每次迭代的所有元素。请改用。$(this).attr()