2010-02-27 46 views
2

所以,我寫了一個小頁面:jQuery的怪怪

<html> 
    <head> 
    <script type="text/javascript" src="jquery.js"></script> 

    <script> 
     function slide() { 
      $("#d").slideUp("slow"); 
      document.getElementById("d").innerHTML=Math.random(); 
      $("#d").slideDown("slow"); 
     } 
    </script> 

    </head> 
    <body> 

    <div id="d"></div> 
    <button onClick="slide()">do</button> 

    </body> 
</html> 

而且我不知道爲什麼,但裏面div文本的$("#d").slideDown("slow")之前改變,slideUp開始權當。
我希望它的工作,以便第一#dslideUp,然後當其高度接近0或某些innerHTML將改變,並且只有在那之後slideDown

回答

2

這樣來做:

function slide() { 
    $("#d").slideUp("slow", function() { 
    $(this).html(Math.random).slideDown("slow"); 
    });  
} 

這裏,完成動畫後的回調函數內的代碼被調用。在您的原始代碼中,情況並非如此。動畫開始後,內容被改變。

閱讀文檔約.slideUp()

更新:

順便說一句。 document.getElementById與jQuery中的$('#id')相同。您可以使用.html()函數。不需要兩次查找相同的元素。通過this可以在回調函數中使用動畫元素。

+0

感謝,完美地爲我工作 – alterionisto 2010-02-27 09:15:36

1

由於您使用jQuery的,你爲什麼不真正使用它?

$('#btnid').click(function() { 
    $("#d").slideUp("slow"); 
      $('#d').html(Math.random()); 
      $("#d").slideDown("slow"); 
}); 

只是一些改善你的代碼

+0

它不能解決OP的問題。 – 2010-02-27 09:20:46

+0

你確實解決了他的問題,不是嗎?那麼爲什麼要重複你已經做過的事情。我只是通過充分利用jQuery功能來增強他的代碼。 – 2010-02-27 10:48:54