我希望先更改图片的src,然后再完成其他操作。就像这样-
$('#bgImage').attr('src','images/'+bgImage, function() {
alert('inside');
});
我该怎么做呢?
也许是另一行代码?
$('#bgImage').attr('src','images/'+bgImage),
$('#searchPin').css("top",y+"px");
$('#searchPin').css("left",x+"px");
如果你想等待图片加载完成,那么你可能需要使用事件load
:
$('#bgImage').load(function() {
$('#searchPin').css("top",y+"px");
$('#searchPin').css("left",x+"px");
}).attr('src','images/'+bgImage);
请注意,在使用attr
更改src
属性之前创建了load(...)
事件处理程序——以防图像已被缓存。
如果您需要多次执行此操作,您可能还需要了解一下unbind
方法。
.css(...)
,因为这不是特别要求的内容。 - Richard JP Le Guen$('#bgImage').attr('src','images/'+bgImage).load(function() {
$('#searchPin').css("top",y+"px");
$('#searchPin').css("left",x+"px");
});
src
属性之前将处理程序绑定到load
事件。这是因为如果图像已缓存,则会在附加处理程序之前加载它,并且不会被调用。您还应该将两个对同一元素的调用链接起来,或者更好的是,由于两者都是对css
方法的使用,请使用接受多个选项的对象参数来更改.css({top:y+'px', left:x+'px'})
。 - Gabriele Petrioli.attr
立即执行。很可能你实际需要的是等待图像加载完成后再执行某些操作。
var $img = $("#bgImage");
$img.load(function(){
// image is done loading, do something
alert("worky (not cached)")
});
$img.attr('src','images/' + bgImage);
<img />
的complete之间的某些混淆... 我敢打赌它是不存在的。 - Matt