代码之家  ›  专栏  ›  技术社区  ›  Kyle Cureau

Ajax回调后的setTimeout替代方法

  •  0
  • Kyle Cureau  · 技术社区  · 14 年前

    我发现自己经常这样做:

    window.onload = function(){
    
       $.get("http://example.com/example.html", function(data) {
           $('#contentHere').html(data);
    
           setTimeout("javaScriptClass.init()", 200);
       });
    
    }
    

    但是,设置超时看起来有点老套(200毫秒已经是普通用户注意力广度的三倍多了)。最好的选择是什么?

    编辑

    javascriptclass.init()通过在Ajax调用中加载的内容作用于DOM对象

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nick Craver    14 年前

    我想这里有一些关于负载的混淆,你可以这样做:

    window.onload = function(){    
       $.get("http://example.com/example.html", function(data) {
           $('#contentHere').html(data);
           javaScriptClass.init();
       });    
    }
    

    $('#contentHere').html(data); DOM元素将在那里随时可用。还可以看看 .load() 用于附件(如果 其他 onload 处理程序可能需要附加),如下所示:

    $(window).load(function(){    
       $.get("http://example.com/example.html", function(data) {
           $('#contentHere').html(data);
           javaScriptClass.init();
       });    
    });
    

    但是,除非您在等待图像,否则可以在 document.ready 处理程序和激发更快,从而获得更好的用户体验。