2011-06-17 72 views
0

我将如何停止从用户交互加载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({ "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但似乎并没有工作。

+0

我不知道我真正了解你想要达到的目的。您是否希望动画功能在点击功能执行后不会触发? – Jivings 2011-06-17 07:49:05

+0

@正确的送件 – Xavier 2011-06-17 08:02:28

+0

doReplay从哪里调用? – Jivings 2011-06-17 08:10:13

回答

1
var stopAnim; 
$('#jqNav li a').click(function(){ 
    ... 

    stopAnim = true; 
} 

function doReplay(){ 

    if(!stopAnim){ 
     // do animation 
    } 
} 
0

你可以添加一个布尔值,你可以在你的动画方法中检查。

if (!stopAnim) { setTimeout(function(){doReplay();},5000); } 
+0

你能否给你的答案增加更多的上下文我试着用你的代码替换我的原始settimeout,并在文档准备好的时候添加一个全局变量,并且stopAni = true;在我的点击功能 – Xavier 2011-06-17 08:20:41

+0

如果你阅读了评论,页面正在被重新加载,所以没有持久变量。 – Jivings 2011-06-17 08:21:09

+0

@Jivings页面本身不重新加载我正在使用.load()加载div到页面 – Xavier 2011-06-17 08:24:33