我的代码有问题...
当此函数被触发时,预加载器会显示,但它永远不会隐藏。
页面也会在内部图像完成加载之前显示。
我的加载功能有问题吗?
$('select.select').change(function() {
var x = $(this).val();
//Hide the current page and show the preloader
$('#page' + x).hide();
$('#pageLoader *').show();
//when current page is loaded, hide preloader and show page
$('#page' + x + ' img').load(function() {
$('#page' + x).show();
$('#pageLoader *').hide();
});
});
答案 0 :(得分:1)
如果在设置事件处理程序之后正在创建<img>
元素,则需要使用 live()来绑定处理程序,这将绑定到与之匹配的现有和将来的元素页面上的选择器:
$('#page' + x + ' img').live("load", function() {
$('#page' + x).show();
$('#pageLoader *').hide();
});
答案 1 :(得分:1)
如果<img>
已经具有src
属性,则需要循环并检查它是否来自缓存,如下所示:
$('#page' + x + ' img').one('load', function() {
$('#page' + x).show();
$('#pageLoader *').hide();
}).each(function() {
if(this.complete) $(this).load();
});
答案 2 :(得分:0)
您需要提供一个网址作为load()
功能的第一个参数。
请参阅documentation。