【问题标题】:jQuery loop is only returning the last element of an arrayjQuery循环只返回数组的最后一个元素
【发布时间】:2019-11-13 15:00:06
【问题描述】:

我只接收我正在循环的数组的最后一个元素,它在一个函数内。

我尝试了一个基本的 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 中的每个li 都应该有一个唯一的标题,第一个应该是 foo,第二个应该是 bar,以此类推。

目前所有li的标题都是bop。

【问题讨论】:

  • $('li').attr() 影响 所有 每个迭代的元素。请改用$(this).attr()

标签: jquery loops closures


【解决方案1】:

只需改变你的 forEach 循环,

$('li').each((i, elm)=>{
  $(this).attr('titles', `i am ${titles[i]}`);
});

【讨论】:

    【解决方案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。所以我只是循环遍历我创建的数组并使用插值设置目标和消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多