2011-09-12 32 views
1

我有以下功能(從中間我已經刪除代碼,是不是重要的我的問題):設置jQuery代碼功能後,大火已經完成

function shadowBoxRefresh(){ 
    $("#sb-nav-next, #sb-nav-previous").click(function(){ 
      $('#sb-container').addClass("visibility_stay"); 
      $('#sb-overlay').addClass("opacity_stay"); 
      Shadowbox.close(); 
      Shadowbox.clearCache(); 
      shadowBoxSetup(); 
      setTimeout("Shadowbox.open(c)", 400) 
      $('#sb-container').removeClass("visibility_stay"); 
      $('#sb-overlay').removeClass("opacity_stay"); 
     } 
    }); 
} 

我的問題是,我需要這部分:

$('#sb-container').removeClass("visibility_stay"); 
$('#sb-overlay').removeClass("opacity_stay"); 

到功能的其餘部分完成後,火。我想知道是否回調能夠完成這項工作,但我在回調中不夠熟練,不知道如何實現它。

您的幫助將不勝感激。

+0

剩下的什麼功能?它在功能的末尾.. –

+0

@Daniel A. White - 我知道!這就是我的想法,但是'班級'在他們應該做的之前就被刪除了。我懷疑它與'setTimeout'有關。 – stefmikhail

+0

你想什麼時候開火? –

回答

3

如果你的意思是發生0.4秒以後「的Shadowbox.open(c)之後」,「功能後剩下的」,那麼這樣做:

function shadowBoxRefresh(){ 
    $("#sb-nav-next, #sb-nav-previous").click(function(){ 
      $('#sb-container').addClass("visibility_stay"); 
      $('#sb-overlay').addClass("opacity_stay"); 
      Shadowbox.close(); 
      Shadowbox.clearCache(); 
      shadowBoxSetup(); 
      setTimeout(function() { 
       Shadowbox.open(c); 
       $('#sb-container').removeClass("visibility_stay"); 
       $('#sb-overlay').removeClass("opacity_stay"); 
      }, 400); 
     } 
    }); 
} 
+0

感謝!我一直在試圖弄清楚如何在'setTimeout'中將幾件事情放置一段時間。唉,這也不管用。如果不解釋整個問題,很難解釋發生了什麼。 – stefmikhail

0

shadowBoxSetup後假設()是當你想要它

function shadowBoxSetup(callback) { 
    // Your code... 
    callback(); 
} 

要使用

function shadowBoxRefresh(){ 
    $("#sb-nav-next, #sb-nav-previous").click(function(){ 
      $('#sb-container').addClass("visibility_stay"); 
      $('#sb-overlay').addClass("opacity_stay"); 
      Shadowbox.close(); 
      Shadowbox.clearCache(); 
      shadowBoxSetup(function(){ 
       $('#sb-container').removeClass("visibility_stay"); 
       $('#sb-overlay').removeClass("opacity_stay"); 
      }); 
      setTimeout("Shadowbox.open(c)", 400); 
     } 
    }); 
} 
0

在功能的其餘部分完成後執行;語句按順序執行。

你是說你想讓它在超時後執行嗎?如果是這樣,創建一個封裝兩個調用和open()調用的函數。

如果不是,您可能需要更清楚一點。