2011-12-03 58 views
0

運行的setInterval當用戶的土地上我的主頁,我用setInterval來循環通過一些類的視覺效果:的setInterval及全球範圍內第一次發生在點擊

var toggleSlide = setInterval(function() { 
     $('#cs-main nav li.cycle').removeClass("cycle" || " ").next().last().addClass("cycle"); 
},600); 

我想只有這種效果

$("#splash").live('click', function() { 
     $(this).fadeOut('slow', function() { 
      $('#main').load('client.html', function() { 
      }).fadeIn(); 

      var toggleSlide = setInterval(function() { 
     $('#cs-main nav li.cycle').removeClass("cycle" || " ").next().last().addClass("cycle"); 
},600); 

     }); 
     return false; 
    }); 

我遇到的(我假設),因爲setInterval的在全球範圍內運行的問題,隨時#cs-main nav li.cycle出現:當用戶點擊初始頁面上,該網站是通過AJAX加載運行一次在頁面上,setInterval完成它的事情。這是有問題的,因爲這個類出現在我的子頁面上,而我的意圖是隻有當用戶點擊#splash時才運行它。

+0

'setTimeout'和'setInterval'功能** *不*要執行的全球範圍**;他們在新的*執行上下文*中運行。 [看到這裏的更多細節。](http://stackoverflow.com/a/7722057/201952) – josh3736

回答

1

使用clearInterval()殺計時器,一旦你用它做...

嘗試如下因素,

$("#splash").live('click', function() { 
    $(this).fadeOut('slow', function() { 

     var toggleSlide = setInterval(function() { 
      $('#cs-main nav li.cycle').removeClass("cycle" || " ").next().last().addClass("cycle"); 
     },600); 

     $('#main').load('client.html', function() { 
     }).fadeIn('slow', function(){ 
      clearInterval(toggleSlide); 
     }); 



    }); 
    return false; 
}); 
+0

謝謝,看起來像clearInterval停止toggleSlide才能完成。 – Yahreen

+0

是的,只要內容淡入,上面的代碼就會停止「toggleSlide」。您可以將「clearInterval」移動到您知道效果已完成的範圍內的任何位置。 –

+0

很好,謝謝,明白了。 – Yahreen