[英]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.