jquery首先滑出,完成后进入单击的页面
又是我。滑入像一种魅力。但是我想扩展脚本。我希望框滑出,恩,当这完成后,然后加载点击的页面 滑出部分工作正常,但页面总是加载得很快。我尝试了延迟、暂停和更多的东西,但由于我是一个jquerynoob,我仍然无法让它在正确的时间工作,或者我确信我编写的代码是正确的 在最新的框滑出屏幕后调用window.location是很重要的。这是因为页面可以包含可变数量的框 请给我一些提示和建议 下面是我的代码: Jquery(在Sohnee建议的更改之后) 以下是指向JSFIDLE的链接和代码的当前状态: 编辑:页面不会加载,动画也不会完成。这就是我要返回的错误 未捕获的TypeError:对象#的属性“location”不是函数 编辑2:jquery首先滑出,完成后进入单击的页面,jquery,window.location,Jquery,Window.location,又是我。滑入像一种魅力。但是我想扩展脚本。我希望框滑出,恩,当这完成后,然后加载点击的页面 滑出部分工作正常,但页面总是加载得很快。我尝试了延迟、暂停和更多的东西,但由于我是一个jquerynoob,我仍然无法让它在正确的时间工作,或者我确信我编写的代码是正确的 在最新的框滑出屏幕后调用window.location是很重要的。这是因为页面可以包含可变数量的框 请给我一些提示和建议 下面是我的代码: Jquery(在Sohnee建议的更改之后) 以下是指向JSFIDLE的链接和代码的当前状态:
$("a").click(function(){
var linkToGo = $(this).attr("href");
var slidingBoxes = $(".slidingbox");
var slidingBoxCount = slidingBoxes.length;
var animationCount = 0;
$(".slidingbox").each(function(index){
$(this).delay(index * 50)
.animate({left: "-=940px", opacity: "0.9"}, 250,
function () {
animationCount++;
if (animationCount == slidingBoxCount) {
document.location = linkToGo;
}
});
});
return false;
});
大声思考:
似乎删除return-false规则会使脚本再次运行,但是页面会提前到达被调用的页面。Return false确保链接的默认操作不起作用。所以所有这些都是有道理的。如果我们替换警报的位置规则,我们会看到警报被连续调用,脚本被卡住
使用的最终代码:
$("a").click(function(){
var linkToGo = $(this).attr("href");
var slidingBoxes = $(".slidingbox");
var slidingBoxCount = slidingBoxes.length;
var animationCount = 0;
$(".slidingbox").each(function(index){
$(this).delay(index * 50)
.animate({left: "-=940px", opacity: "0.9"}, 250,
function () {
animationCount++;
if (animationCount == slidingBoxCount) {
document.location = linkToGo;
}
});
});
return false;
});
原始答案:您可以通过将位置更改移动到动画上的回调来实现这一点 基于
- 想要动画一系列的框,并在最后一个加载一个新的页面
var sildingBoxes = $(".slidingbox"); var slidingBoxCount = slidingBoxes.length; var animationCount = 0; $(".slidingbox").each(function(index){ $(this).delay(index * 50) .animate({left: "-=940px", opacity: "0.9"}, 500, function () { animationCount++; if (animationCount == slidingBoxCount) { document.location = linkToGo; } }); });