jQuery img.load()每次都会导致额外的负载
我有一个背景图像,每当ajax事件触发时,我都想重新加载它。在背景图像加载新的图像源后,我淡入一些其他隐藏元素 问题在于,每次加载ajax时,background image.load()success函数都会额外触发一次(第一次,1次加载;第二次,2次加载;以此类推) [编辑以显示更多上下文]jQuery img.load()每次都会导致额外的负载,jquery,image,load,Jquery,Image,Load,我有一个背景图像,每当ajax事件触发时,我都想重新加载它。在背景图像加载新的图像源后,我淡入一些其他隐藏元素 问题在于,每次加载ajax时,background image.load()success函数都会额外触发一次(第一次,1次加载;第二次,2次加载;以此类推) [编辑以显示更多上下文] // all elements that will be updated (fades array) are faded out // initial ajax request which inclu
// all elements that will be updated (fades array) are faded out
// initial ajax request which includes bg image path, new content, etc
$.get( imgSrc, function(data) {
// set background image src to preloaded image
$("#content>img").attr({"src": imgData.src});
$("#content>img").attr({"alt": imgData.alt});
$("#content>img").attr({"title": imgData.title});
// update other elements with ajax data
[...]
// load image and fade in all other elements
console.log( 'begin bg image load');
$("#content>img").load(function() {
console.log( 'this selector matches ' + $(this).length + ' element');
console.log( '> begin fades..');
for(var i=0; i < fades.length; i++){
$( fades[i] ).fadeTo(750, 1);
}
console.log( '> faded in ' + i + ' elements');
});
});
我的假设:
- 这不是较大循环的一部分:“开始bg图像加载”仅打印一次
- 只有一个#content>img元素,尽管如果不是这样的话,这种行为是有意义的
这与.load()专门对图像进行操作的方式有关吗?我在这里做错了什么?在元素上设置
src
属性后,实际上会触发图像加载
当您调用
.load()
时,实际上是在注册一个新的事件处理程序,因此每次调用$.get()
时,您都在一次又一次地注册该处理程序,结束。您还需要向我们展示AJAX是如何发生的。我正在使用先前AJAX请求返回的img路径为前面讨论的图像设置src。我假设img.load()然后加载更新的src,但我猜这是一个不确定的假设..不,img.load
注册回调处理程序。只需设置.src
就足以触发重新加载。请看我的答案。好的,尽管一次只处理一个图像,但产生问题的是多个事件处理程序。酷。但这让我又回到了另一个我认为已经解决的问题:如何延迟一个动作(在其他元素中淡入)直到图像加载到浏览器中?如果将整个.load()
块移到$.get()
回调之外,它可能“正常工作”。不好:元素在设置图像src之前淡入。无论如何,根据firebug控制台。@doub1ejack您仍然在.load()
回调中进行淡入淡出?我注释掉了整个$(“#content>img”).load()
函数,并将淡入淡入淡出循环移动到$.get()
结束后的行。
begin bg image load
this selector matches 1 element
> begin fades..
> faded in 7 elements
this selector matches 1 element
> begin fades..
> faded in 7 elements
this selector matches 1 element
> begin fades..
> faded in 7 elements