同步使用jQuery加载函数的最佳方法是什么?jQuery .load(函数)同步
我需要加载图像,但不能执行下一行代码,直到该图像已加载。
我可以循环一个变量,直到加载完成,但想知道是否有更好的方法来做到这一点。
var img = jQuery('<img src="' + url + '"/>').load(function() {
});
//Run code here once img load has comlpeted.
同步使用jQuery加载函数的最佳方法是什么?jQuery .load(函数)同步
我需要加载图像,但不能执行下一行代码,直到该图像已加载。
我可以循环一个变量,直到加载完成,但想知道是否有更好的方法来做到这一点。
var img = jQuery('<img src="' + url + '"/>').load(function() {
});
//Run code here once img load has comlpeted.
据我所知,在load
事件总是会触发异步,但如果图像(在一些浏览器)已经被缓存。唯一可靠的解决方案是像你一样把代码放在回调中。但是,为确保load
处理程序将始终在所有浏览器中被触发,即使图像被缓存,请确保在之前添加处理程序,设置图像的src
属性。
var img = jQuery('<img src="' + url + '"/>').load(runner);
function runner() {
//run code here once image is loaded
}
很好的抓住plalx – zarazan
您还可以使用回调函数来获得同步行为 -
var result = $('#main-container').load('html/Welcomeform.html',
function() {
if($("textarea").find("#mail-id")){
$("textarea#mail-id").val(email_id);
}
});
我来到这里寻找一个类似的解决方案。从读取中,使用.load是不可能的,您需要使用AJAX请求,正如问题注释所指出的那样。
在我的情况下,我需要加载一个html文件,我添加了一个转换来更改内容。旧内容在转换后的新内容之前显示,即使我在加载回调中显示内容。
var main = $("#main");
main.load("about.html", displaySection);
function displaySection() {
main.show('blind');
}
我的解决方法是运行显示加载的内容在超时函数内的延迟参数为200的过渡。
var main = $("#main");
main.load("about.html", displaySection);
function displaySection() {
setTimeout(function() {
main.show('blind');
}, 200);
}
的问题可能是,如果连接是缓慢,在新页面的时间超过200毫秒加载,但在这种情况下,我不知道该回调将在稍后推出。我不明白为什么在没有超时的情况下不工作,我感觉很难看,但它解决了我的问题......以防万一其他人没有考虑到这种可能性。
这有你需要的东西:http://stackoverflow.com/questions/5364166/how-to-load-page-synchronously-using-jquery – tymeJV