繁体   English   中英

如何在jQuery每个循环中保存对上下文的更改?

[英]How can I save changes to the context in a jQuery each loop?

我有以下代码,该代码在显示AJAX调用之前会对其进行一些预处理(未显示显示部分)。 特别是,它在响应的每个li元素中设置图像的src属性。

$(response.items).filter('li').each(function(i){

  $('img', this).attr('src', 'images/Picture.jpg');
  if (i==0){
    console.log(this);
    console.log(response.items);
  }

});

console.log(this)的输出显示src属性在this表示的上下文中正确设置,但是console.log(response.items)的输出显示response.items不变。

有没有一种(最好是非hacky)的方法来将对li元素的所有更改持久化到response.items

我认为这里的问题是您正在使用filter方法。 Filter (也map )不修改原始数组,它们实质上是复制它的副本。 因此,如果您要像这样检查整个代码块的返回值:

var processed = $(response.items).filter('li').each(function(i){

  $('img', this).attr('src', 'images/Picture.jpg');
  if (i==0){
    console.log(this);
  }

});
console.log(processed);

它应该正确显示更改的值。 根据您要执行的操作,您还可以在每个方法之后使用map方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM