30

这个问题已被问过几次,但没有以可以帮助我解决具体问题的方式回答。从导航列表中,单击项目时,我正在使用该.html()函数将一些 HTML 内容加载到 div 中。没有ajax请求。HTML 内容包含图像。因此,加载可能需要一些时间。并且由于.html()是同步操作,下一行将立即执行。

一旦我使用 加载内容.html(),我就启用了一个名为 tinyscrollbar 的第三方自定义滚动条。如果加载的内容有图像,那么滚动条会在加载图像之前计算内容 div 的高度,从而导致滚动条不会一直滚动。

我不想使用.setInterval(). 有解决方案吗?jQuery 中是否还有其他函数与该.html()函数类似但具有某种回调功能?

谢谢你。

4

4 回答 4

57
$('#divId').html(someText).promise().done(function(){
    //your callback logic / code here
});
于 2013-08-04T05:53:24.050 回答
12

根据 Mike Robinson(和dystroy)的建议,我的问题的答案是:

$("#myContentDiv").html('HTML content comes here');
var contentImages = $("#myContentDiv img");
    var totalImages = contentImages.length;
    var loadedImages = 0;
    contentImages.each(function(){
        $(this).on('load', function(){
            loadedImages++;
            if(loadedImages == totalImages)
            {
                $("#myContentDiv").tinyscrollbar();
            }
        });
    });
于 2012-04-24T15:40:26.707 回答
-4

为了检查图像是否加载,您可以使用以下内容;

<img src="your_image_path" />


<script>
    $('img').load(function() {
        //call_your_function();
    });
</script>
于 2012-04-24T15:28:25.783 回答
-6
$(window).load(function() {
  // code here
})();
于 2012-04-24T15:22:57.390 回答