簡體   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