jQuery .load()等到内容加载完毕

use*_*870 10 jquery

我想让网页页面彼此滑动.所以我做了$('a').click(); 检查链接是否为本地的函数,以及是否获取链接href并将其加载到正文.

$('a').click(function(){
    var href=$(this).attr('href');  
    $('body').load(href);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

它看起来不错,但我的网站也包含了很多js插件.执行它们需要一段时间,并且.load操作首先显示'由js'内容保持不变,然后执行js.它导致内容的错误flickr.

是否可以使用JS的所有功能来缓存新内容,在完成之前不要更改旧主体,并且当所有DOM和JS都在新内容上完成时,slideOut旧内容和slide在新内容中?

编辑:我认为重点不在于检测js执行,而在于检查是否所有其他文件都被加载 - 应该在$(window).load的新文件同时触发DOM更改.

[编辑] - - - - - - - - - - - - - - - - - - - - - - - - -----------------------

我的解决方案是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);
}
Run Code Online (Sandbox Code Playgroud)

并且它通常但不总是防止内容的错误闪烁.现在它可以以某种方式检测jQuery ajax加载内容并应用一些show timeout等等.但实际上问题仍然存在.

现在为这个问题做一个更简单的例子:

如何在$('body')之后开始更改DOM.在点击触发.load('something.php')函数的链接后,加载('something.php')3000ms?(点击后应立即开始加载,但必须稍后启动DOM更改)

Abd*_* Sy 0

可能有帮助的一件事是将您的 html 放入某个具有用户定义类型的脚本标记中(或将您的 html 加载到脚本标记中)

像这样 :

<script type="text/template" id="myTemplate">
    <div>some html</div>
</script>
Run Code Online (Sandbox Code Playgroud)

除非将其附加到页面,否则 Dom 不会理解里面的 html 代码

//... at some point
var tmp = $('#myTemplate').html();
$(body).append(tmp);
Run Code Online (Sandbox Code Playgroud)

阿霍斯!