我想让网页页面彼此滑动.所以我做了$(‘a’).click();检查链接是否是本地的函数,以及是否获得链接href并将其加载到正文.
$('a').click(function(){ var href=$(this).attr('href'); $('body').load(href); return false; });
它看起来不错,但我的网站也包含了很多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); }
并且它通常但不总是防止内容的错误闪烁.现在有可能以某种方式检测jQuery ajax加载内容并应用一些show timeout等等.但实际上问题仍然存在.
现在为这个问题做一个更简单的例子:
如何在$(‘body’)之后开始更改DOM.在点击激活.load(‘something.PHP’)函数的链接后,加载(‘something.PHP’)3000ms? (点击后应立即开始加载,但必须稍后启动DOM更改)
解决方法
也许你应该使用promises并尝试这样的事情:
$('a').click(function(){ var href=$(this).attr('href'); $('body').hide(); $('body').load(href,function() { $('body').show(); }); });