Jquery加载页面
我正在尝试使用jquery创建一个简单的网站。我只想使用Jquery加载页面,jquery,html,Jquery,Html,我正在尝试使用jquery创建一个简单的网站。我只想使用.load()函数将html页面加载到一个div中。问题是函数-$('.preload').hide()和({opacity:1})在页面及其图像完全加载到div之前启动!我怎样才能修好它 $(window).load(function () { $('li a').click(function () { //event on click var toLoad = $(this).attr('href'); //get href
.load()
函数将html页面加载到一个div中。问题是函数-$('.preload').hide()
和({opacity:1}
)在页面及其图像完全加载到div之前启动!我怎样才能修好它
$(window).load(function () {
$('li a').click(function () { //event on click
var toLoad = $(this).attr('href'); //get href of a li element
$('.load-in').fadeOut('fast', loadContent);
$('.loader').show(); //show the loader
function loadContent() {
$('.load-in').css({ //set opacity 0.3
opacity: 0.3
}).load(toLoad, hideLoad); //load html page, then callback
};
function hideLoad() {
$('.load-in').fadeIn('fast',
function () { //hide preloader and set opacity 1
$('.loader').fadeOut('fast');
$('.load-in').animate({
opacity: 1
});
});
};
return false;
});
});
您需要确保将jQuery代码放入$(document).ready()处理程序中。这将确保您的代码在加载页面中的所有元素后运行
请参阅jQuery API页面:您需要确保将jQuery代码放入$(document).ready()处理程序中。这将确保您的代码在加载页面中的所有元素后运行
请参阅jQuery API页面:如果要检测图像何时已完全加载,以便在显示内容后不会看到它们出现,您必须在
.load in
元素中包含的所有图像上附加load
事件处理程序,并在加载所有图像之前等待,然后才能淡入元素并淡出加载指示器
类似这样的内容(基于您站点的代码):
然而,这里有一些你应该知道的事情(摘自):
与图像一起使用时加载事件的注意事项是一个常见问题
开发人员尝试使用.load()快捷方式解决的问题是执行
当图像(或图像集合)完全
加载。关于这一点,有几个已知的警告值得注意
注意。这些是:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地在DOM树上冒泡
- 对于已经存在于浏览器缓存中的图像,可以停止激发
如果要检测图像何时完全加载,以便在显示内容后看不到它们的出现,您必须在
.load in
元素中包含的所有图像上附加load
事件处理程序,并在加载所有图像之前等待,然后才能淡入元素并淡出加载指示器
类似这样的内容(基于您站点的代码):
然而,这里有一些你应该知道的事情(摘自):
与图像一起使用时加载事件的注意事项是一个常见问题
开发人员尝试使用.load()快捷方式解决的问题是执行
当图像(或图像集合)完全
加载。关于这一点,有几个已知的警告值得注意
注意。这些是:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地在DOM树上冒泡
- 对于已经存在于浏览器缓存中的图像,可以停止激发
你的问题不清楚。无意冒犯,您的页面上的代码结构也很糟糕。很难理解你的意图。你需要复制问题的相关代码,而不仅仅是网页链接。你的问题不清楚。无意冒犯,您的页面上的代码结构也很糟糕。很难理解你的意图。你需要复制问题的相关代码,而不仅仅是网页链接。它已经在
窗口中。在他的页面上加载。看看代码,这根本不是问题所在。阅读问题。它已经在窗口中。将加载到他的页面上。看看代码,这根本不是问题所在。阅读问题。谢谢你的帮助,我是Jquery的新手,如果这不会给你带来太多麻烦,你能演示一下怎么做吗@user2264246,我刚才回答了,但是我没有测试,但这就是我的想法。@user2264246,所以你尝试了我的解决方案,但它不起作用?您是否有任何错误或未给出预期结果?抱歉!也许是我瞎了眼什么的,但我在这里找不到接受按钮!我只看到上面你的留言被接受了,就是这样!可能是浏览器的问题@user2264246,看看这里,知道如何接受祝你有一个美好的一天!谢谢你的帮助,我是Jquery的新手,如果这不会给你带来太多麻烦,你能告诉我怎么做吗@user2264246,我刚才回答了,但是我没有测试,但这就是我的想法。@user2264246,所以你尝试了我的解决方案,但它不起作用?您是否有任何错误或未给出预期结果?抱歉!也许是我瞎了眼什么的,但我在这里找不到接受按钮!我只看到上面你的留言被接受了,就是这样!可能是浏览器的问题@user2264246,看看这里,知道如何接受祝你有一个美好的一天!
function loadContent() {
var $loadIn = $('.load-in');
$loadIn.css({ opacity : 0.3 }).load(toLoad , function () {
var $images = $('img', $loadIn),
imageCount = $images.length,
loadedCount = 0;
//wait on images before showing the content
$images.on('load', function () {
if (++loadedCount === imageCount) {
$images.off('load');
hideLoad();
}
});
//make sure the content is still shown if images fails to load
//or are very slow to load
setTimeout(function () {
if (loadedCount !== imageCount) {
$images.off('load');
hideLoad();
}
}, 5000);
});
};