Jquery:attr后如何进行回调?

时间:2011-10-21 14:30:57

标签: jquery html css

我想先改变img src然后完成其他的。像这样的东西 -

$('#bgImage').attr('src','images/'+bgImage, function() {
    alert('inside');
});

我将如何做到这一点?

3 个答案:

答案 0 :(得分:25)

也许是另一行代码?

$('#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);

请注意,load(...)事件处理程序是在使用src更改attr属性之前创建的 - 如果图像已被缓存。

如果您不止一次这样做,您可能也想查看unbind

答案 1 :(得分:9)

当您更改图像的源时,它将被加载,并在完成后触发onload事件。所以:

$('#bgImage').attr('src','images/'+bgImage).load(function() {
    $('#searchPin').css("top",y+"px");
    $('#searchPin').css("left",x+"px");
});

答案 2 :(得分:6)

.attr立即执行。你实际需要的更多的是等到图像完成加载,然后做一些事情。

var $img = $("#bgImage");    
$img.load(function(){
    // image is done loading, do something
    alert("worky (not cached)")
});
$img.attr('src','images/' + bgImage);