我试图找出重写某些代码的最佳方法。基本上,我们有一些广告,一旦页面加载后通过AJAX加载(不是高优先级,所以我们不希望它持有DOM渲染)。这就是我在Firefox中的网络工具中看到的:
这是当前的代码:
$(document).ready( function() {
....
$.getJSON("/cgi-bin/links/spots_load_new.cgi", {
catid: category_id,
linkid: link_id,
t: temp_set
}, function(results) {
showSpots(results);
});
});
......这是我认为在阅读$.when()
- https://api.jquery.com/jquery.when/后我认为可行的方法:
$(document).ready( function() {
....
$.when(
$.getJSON("/cgi-bin/links/spots_load_new.cgi", {
catid: category_id,
linkid: link_id,
t: temp_set,
})
).then( function(results) {
showSpots(results);
});
});
但是,项目似乎仍然在 DOMContentReady 之前调用。怎么解决这个问题?
答案 0 :(得分:2)
您的两个代码完全相同。
您需要使用$(document).ready
包装代码,如下所示:
$(document).ready(function(){
// $.getJSON...
});
答案 1 :(得分:1)
首先,请注意您的问题中的两个代码块是等效的。如果您想在页面中的所有其他内容加载后执行该代码,那么您可以挂钩load
的{{1}}事件,如下所示:
window