2010-10-29 64 views
0

JQuery的fadeto動畫這裏是我的代碼:有回調的問題

function hideColumnAndShowOther(columnToHide, columnToShow) { 
$(columnToHide).fadeTo("slow", 0.0, function() { 
         $(columnToShow).fadeIn("slow"); 
         }); 
} 

在這種情況下,回調函數沒有被調用。我使用了螢火蟲工具來解決問題的根源。在回調函數中,'columnToShow'變量不存在。我認爲這是合乎邏輯的,因爲它是一個獨立的區塊,但我怎麼才能解決這個問題呢?你有小費嗎?

謝謝!

+0

你能說明你在哪裏/如何使用這段代碼。 columnToHide是什麼類型的元素? – gideon 2010-10-29 08:46:52

+0

columnToHide是一個css id元素,它就像「#columnToShow」,並在單擊錨點時使用此代碼。 – 2010-10-29 08:58:30

+0

這適用於我:http://jsfiddle.net/stevegreatrex/EqxsK/ – 2010-10-29 09:00:21

回答

1

問題是columnToShow變量超出了範圍。這意味着什麼都沒有意義。請嘗試$(this).fadeIn(「slow」)。

$(this)引用了當您將回調函數附加到該元素時剛剛消失的元素。

編輯:(誤讀的問題)

如果你改變它像下面這樣它應該工作。

function hideColumnAndShowOther(columnToHide, columnToShow) { 
    var showColumn = columnToShow; 
    $(columnToHide).fadeTo("slow", 0.0, 
     function() { 
      $(showColumn).fadeIn("slow"); 
     }); 
} 
+0

但這並不能解決我的問題...我想在fadeTo完成時淡入columnToShow。 – 2010-10-29 08:51:47

+0

對不起,我誤解了這個問題。但原因仍然是正確的,變數現在超出範圍。 – 2010-10-29 08:59:15

+0

如果在fadeOut另一列之前創建類似var showColumn = columnToShow的新變量,則可以在回調中使用showColumn。 – 2010-10-29 09:00:10