Javascript 停止jquery动画循环(函数和嵌套)
如何阻止jquery动画在用户交互时加载Javascript 停止jquery动画循环(函数和嵌套),javascript,jquery,Javascript,Jquery,如何阻止jquery动画在用户交互时加载 $('#jqNav li a').click(function(){ if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });} else if($(this).parent().is(".nav2")) { $('.landing .main .nav ul').css({
$('#jqNav li a').click(function(){
if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });}
else if($(this).parent().is(".nav2")) { $('.landing .main .nav ul').css({ "background-position" : "0 -100px" });}
else if($(this).parent().is(".nav3")) { $('.landing .main .nav ul').css({ "background-position" : "0 -150px" });}
else if($(this).parent().is(".nav4")) { $('.landing .main .nav ul').css({ "background-position" : "0 -200px" });};
$page = $(this).attr('href');
var $hashTag = $(this).attr('name');
window.location = "#" + $hashTag;
loadData();
return false;
});
这是用户点击功能
function doReplay(){
$('body')
.fadeTo(0,1,function(){
$page = $welcome;
loadData();
})
.delay(1000)
.fadeTo(0,1,function(){
$page = $startup;
loadData();
})
.delay(1000)
.fadeTo(0,1,function(){
$page = $to2m;
loadData();
})
.delay(1000)
.fadeTo(0,1, function(){
$page = $to25m;
loadData();
setTimeout(function(){doReplay();},5000);
});
}
以上是动画功能
我尝试过clearTimeout,但它似乎不起作用。您可以添加一个布尔值,以便在动画方法中进行检查
if (!stopAnim) { setTimeout(function(){doReplay();},5000); }
我不确定我是否真的理解你想要实现的目标。是否希望在执行单击功能后不触发动画功能?@Jivings这是正确的,从何处调用doReplay?@Jivings在文档上调用它已准备就绪,因此onClick会更改window.location,并在更改后调用doReplay。但是你只想在页面不是从onClick加载时调用它?你能给你的答案添加更多的上下文吗?我尝试用你的代码替换我原来的settimeout,并在document ready中添加了一个全局变量,stopAni=true;在我的单击函数中,如果您阅读了注释,则页面正在重新加载,因此没有持久变量。@Jivings页面本身没有重新加载,我正在使用.load()将div加载到页面中。哦,在这种情况下,这是一种很好且简单的方法。
var stopAnim;
$('#jqNav li a').click(function(){
...
stopAnim = true;
}
function doReplay(){
if(!stopAnim){
// do animation
}
}