2010-10-22 5 views
0

Я считаю себя делать это много:Альтернативы SetTimeout после обратного вызова Ajax

window.onload = function(){ 

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

     setTimeout("javaScriptClass.init()", 200); 
    }); 

} 

Но SetTimeout кажется немного Hacky (и 200мс уже в три с лишним раза больше концентрации внимания среднего пользователя :). Какая лучшая альтернатива?

EDIT

javaScriptClass.init() действует на DOM объекты из того, что загружается при вызове Ajax

+1

Почему у вас есть отсрочка? –

+0

@ Ник! javaScriptClass.init() действует на объекты DOM из того, что загружается в вызов ajax. – Kyle

+1

Они будут загружены сразу после строки перед вызовом '.html()', это синхронная операция. –

ответ

1

Я думаю, что есть какая-то путаница здесь о нагрузке, вы можете просто сделать это:

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 обработчиком и раньше огонь, что приводит к лучшему опыту пользователя.

+0

Спасибо, Ник. Я запутался, но это, очевидно, правильный ответ. – Kyle

Смежные вопросы