我想让网页页面彼此滑动.所以我做了$('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更改)
可能有帮助的一件事是将您的 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)
阿霍斯!
| 归档时间: |
|
| 查看次数: |
11374 次 |
| 最近记录: |