2009-12-07 173 views
0

我有這樣的代碼:爲什麼不在jQuery中正確解析此回調?

$(document).ready(function(){ 
     $(".links a").click(function(e){ 
      var toLoad = "products.html #" + this.id; 
      $('#block').fadeTo('fast',0,loadContent); 

      function loadContent() { 
        $('#block').load(toLoad,'',showNewContent()) 
       } 
      function showNewContent() { 
        $('#block').fadeTo('slow',100); 
       } 
      e.preventDefault(); 
     }); 

    }); 

的理念是:(!檢查)

  • 點擊一個鏈接觸發
  • 的 「塊」 格衰爲0(查看!)
  • 內容切換出(檢查!)
  • 的 「塊」 的div淡出回100 (哎呦!)

我看到的行爲是div淡出,然後在fadeOut完成後立即彈出新內容。

對此有何看法?

+0

'.load(... showNewContent())'應該是'.load(... showNewContent)' (注意丟失的括號)。 –

回答

2

更改此:

function loadContent() { 
    $('#block').load(toLoad,'',showNewContent()) 
} 

function loadContent() { 
    $('#block').load(toLoad,'',showNewContent) 
} 

要解釋一下:你調用函數立即(並通過其不存在回報爲load()),而要作爲回調傳遞函數(而不是它返回的內容)。

注:也,fadeTo()狀態:

的不透明度(從0 的數爲1)褪色。

所以你應該改變:

function showNewContent() { 
    $('#block').fadeTo('slow',100); 
} 

function showNewContent() { 
    $('#block').fadeTo('slow', 1); 
} 
+0

這仍然導致它直接回彈。讓我把它放在演示... 此外,你今晚2 2回答我的問題。感謝您在我週日晚上的jQuery自學教程中選擇前排座位。 –

+0

你解決了兩個錯誤中較大的一個。 (另一個是不透明度是0-1,而不是0-100,它漸漸消失了,但是很快從0-1(在100的路上)非常快) –

+0

我只是編輯了那部分。 – cletus

相關問題