Jquery load()等待内容被加载
我想让网页平滑地彼此滑动。所以我赚了$('a')。点击();函数,用于检查链接是否为本地链接,以及是否为本地链接,并获取链接href并将其加载到正文中Jquery load()等待内容被加载,jquery,Jquery,我想让网页平滑地彼此滑动。所以我赚了$('a')。点击();函数,用于检查链接是否为本地链接,以及是否为本地链接,并获取链接href并将其加载到正文中 $('a').click(function(){ var href=$(this).attr('href'); $('body').load(href); return false; }); 它看起来不错,但我的网站也包含了很多js插件。执行它们需要一段时间,.load操作首先显示“由js更改”内容,然后执行js。它
$('a').click(function(){
var href=$(this).attr('href');
$('body').load(href);
return false;
});
它看起来不错,但我的网站也包含了很多js插件。执行它们需要一段时间,.load
操作首先显示“由js更改”内容,然后执行js。它会导致内容的flickr不好
有没有可能通过执行JS来缓存新内容,在完成之前不要更改旧的正文,当所有的DOM和JS都在新内容上完成时,滑出旧内容并滑入新内容
编辑:我认为重点不是检测js执行,而是检查是否加载了所有其他文件-DOM更改应该在启动$(window)的同时启动。加载新文件将是错误的
[编辑]-------------------------------------------------------------
我的解决方案是css代码(css总是在生成dom之前加载),它的跨浏览器不透明度为0
.transparent{
-moz-opacity: 0.00;
opacity: 0.00;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=0);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
filter:alpha(opacity=0);
}
而且它通常可以防止内容的不良flickr,但并不总是这样。现在可以通过某种方式检测jQueryAjax加载的内容,并应用一些显示超时等。但事实上,这个问题仍然悬而未决
现在为这个问题举一个更简单的例子:
在点击fire.load('something.php')函数的链接3000毫秒后,如何在$('body').load('something.php')之后开始更改DOM?(应该在单击后立即开始加载,但DOM更改必须在稍后启动)一个可能有帮助的方法是放置html 在具有用户定义类型的某些脚本标记内 (或在脚本标记中加载html) 像这样:
<script type="text/template" id="myTemplate">
<div>some html</div>
</script>
阿霍斯 不要使用.load()。这种方法确实是你想要避免的
尝试这样做:
当然,如果您的脚本依赖于$(document).ready()之类的东西,这将不起作用,因为这将立即执行。图像也有同样的问题。它们是异步加载的,因此您不知道何时加载了所有它们,除非您将处理程序附加到每个映像的onload事件,这不是一个好主意。也许您应该使用承诺并尝试以下操作:
$('a').click(function(){
var href=$(this).attr('href');
$('body').hide();
$('body').load(href, function() {
$('body').show();
});
});
load有一个等待ajax请求完成的回调,您可以使用它,这都在中,如果您的插件有类似的回调,您也可以使用它们,否则超时可能是最简单的解决方案。
$('a').click(function(){
var href=$(this).attr('href');
$('body').hide();
$('body').load(href, function() {
$('body').show();
});
});