【问题标题】:load() callback returns before loading is finishedload() 回调在加载完成之前返回
【发布时间】:2012-12-20 12:00:11
【问题描述】:

在我的页面上,我有以下文档准备功能:

$(document).ready(function(){
    $('a').click(function(){
       var toLoad = $(this).attr('href')+' #newdiv';        
       $('#mydiv').html('<p><img src="images/ajax-loader.gif" /></p>');
       $('#mydiv').load(toLoad, afterLoad());       

       function afterLoad() {
          alert('test');
       }         
       return false;        
    });
});

当一个链接被点击时,来自目标链接的#newdiv的内容被加载到当前页面的#mydiv中。在加载之前,我将#mydiv 的当前内容替换为动画 gif。加载完成后,动画 gif 消失,新内容进入其中。这一切都完美无缺。

但是,加载完成后,我想执行一个名为afterLoad 的新函数。目前,我只添加了一个alert。奇怪的是,当仍然显示动画 gif 时会出现警告框,所以当新内容仍在加载时。当新内容已经到位时,还有其他方法可以执行 afterLoad 吗?

【问题讨论】:

    标签: jquery callback load


    【解决方案1】:

    改为:

    $('a').click(function(){
        var toLoad = $(this).attr('href')+' #newdiv';        
        $('#mydiv').html('<p><img src="images/ajax-loader.gif" /></p>');
        $('#mydiv').load(toLoad, afterLoad);
     });
    function afterLoad() {
       alert('test');
    } 
    

    【讨论】:

      【解决方案2】:

      您需要将要在回调中运行的函数作为参考传递。试试这个:

      $('#mydiv').load(toLoad, afterLoad);  // Note the removal of ()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-11
        • 2020-04-17
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        相关资源
        最近更新 更多