2013-04-01 127 views
0

我已經寫過腳本,它從外部的php文件加載內容。我使用jquery1-9-1。我的腳本正常工作,除了當我第二次點擊按鈕時。在動畫開始之前有0.5秒的延遲。我想我知道什麼是問題,它在哪裏。必須在第一次點擊時執行$("#header").animate({marginTop: "10px"...。點擊一次後,它必須停用。誰知道如何解決它?不要判斷我如此苛刻和對不起我的英語動畫開始延遲

$(document).ready(function() { 
    var content = $("#content"); 
    $("#main_menu a").click(function() { 
     var id = this.id; 
     $("#header").animate({ 
      marginTop: "10px" 
     }, 500, function() { 
      $("#content").fadeOut(500, function() { 
       $("#content").load(id + ".php") 
       $("#content").fadeIn(500) 
      }) 
     }) 
    }) 
}) 

回答

2

我要問,什麼是緩存content = $("#content")的點,如果你再拒絕使用它,只是叫$("#content")反覆以後呢?

無論如何,你需要一個變量來判斷它是第一次運行與否:

$(function() { 
     var content = $("#content"), isfirst = true; 
     $("#main_menu a").click(function() { 
      var id = this.id, 
       reveal = function() { 
        content.fadeOut(500, function() { 
         content.load(id + ".php") 
         content.fadeIn(500) 
        }); 
       }; 
      if(isfirst) $("#header").animate({marginTop: "10px"}, 500, reveal); 
      else reveal(); 
      isfirst = false; 
     }); 
    }); 
+0

作品完美。謝謝。這不是我自己的代碼。我正在尋找不同網站的教程,並試圖學習JavaScript。所以謝謝你兩次工作腳本和建議。接受並解決 – DSI

0

你需要跟蹤它是否已加載,在這種情況下。一個簡單的變量和一些封應該這樣做:

var isLoaded = false; 
$("#main_menu a").click(function() { 
      var id = this.id; 
      if (!isLoaded) { 
       $("#header").animate({ 
       marginTop: "10px" 
       }, 500); 
       isLoaded = true; 
      } 
      $("#content").fadeOut(500, function() { 
      $("#content").load(id + ".php") 
      $("#content").fadeIn(500) 
     }) 
    }); 
+0

這不是被要求。 –

+0

現在是什麼被要求。有時候事情還不清楚=) –

+0

也謝謝你Rob G – DSI