下面是我的代码。我想根据ajax回调更改每个mainimage src。
jQuery('.xxx img[src*="mainimage"]').each(function() {
vobj = $(this);
var inmainurl = 'https://xxx.kki/api/oembed.json?url=' + $(this).attr('src');
$.ajax({
url: inmainurl,
dataType: 'json',
success: function(result) {
$(this).attr('src', result.thumbnail_url); //this is not working.
}
});
});
以下无效
success: function (result) {
$(this).attr('src',result.thumbnail_url);//this is not working.
}
如何实现这一目标?
答案 0 :(得分:1)
如果您将内部$(this).attr
更改为vobj.attr
会解决您的问题吗?
看到vobj是你定义的变量。
答案 1 :(得分:0)
而不是
$(this).attr('src', result.thumbnail_url);
写
vobj.attr('src', result.thumbnail_url);
this
是函数上下文,它对于两个函数都是不同的,但是ajax回调可以访问vobj变量。
答案 2 :(得分:0)
您需要在循环中使用闭包,否则vobj
变量将在$.ajax
调用后更改为下一个元素。您还需要在vobj
处理程序中使用success
变量。试试这个:
jQuery('.xxx img[src*="mainimage"]').each(function() {
(function($el) {
$.ajax({
url: 'https://xxx.kki/api/oembed.json?url=' + $el.attr('src');,
dataType: 'json',
success: function(result) {
$el.attr('src', result.thumbnail_url);
}
});
})($(this));
});