2011-04-02 42 views
0

我正在使用JQuery 1.5.2。ASP.NET中的JQUERY .show()函數

雖然使用.show函數,但它僅顯示元素的一部分,類似0.3秒,然後元素再次隱藏自身。這與所有其他形式一致。我究竟做錯了什麼?

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.5.2.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('#Button1').click(function() { 
      $('#clickmeupdate').show(function() { 

      }); 
     }); 

    }); 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
    <span style="background-color:Blue; display: none" id="clickmeupdate" >Click me to update</span> 
     <asp:Button ID="Button1" runat="server" Text="Button" /> 
    </div> 
    </form> 
</body> 
</html> 
+0

我不使用ASP的服務器控件,但我有點猜測按鈕上的'runat =「server」'進入了它...... – 2011-04-02 18:05:37

+0

我認爲TJ在這裏有一個要點。查看「查看源代碼」按鈕ID可能會有所不同。這就是使用ClientId屬性引用Id的情況。 – 2011-04-02 18:08:03

+0

歡呼隊友,asp控件不工作,但html工作正常 – user478636 2011-04-02 18:09:29

回答

2

該按鈕回發,並且當它被設置在顯示器背面無法比擬的。

您可以通過不使用asp.net按鈕來停止回發,只需使用html按鈕或添加onClick事件並返回false即可。

編輯 - 我調整了我的答案,因爲在你提到的評論中你需要按鈕點擊事件。

您仍然可以通過使用OnClientClick來運行jQuery。 See this for more info.

但是,由於OnClientClick首先發生,然後是onClick,您仍然存在回發重置跨度的問題,從而無法顯示。

我想你真的想爲此設置一個AJAX類型的解決方案,或者只需將你的span設置爲runat = server,並在你的代碼後面點擊按鈕將其設置爲可見。

我懷疑,雖然你會更好地檢查Asp.Net Web窗體中的UpdatePanel/AJAX stuff。您可以使用jQuery AJAX solution來完成所有這些工作,但是您可能更容易使用Web窗體UpdatePanel。

+0

但問題是,我在調用button1_click事件中的函數也 – user478636 2011-04-02 18:22:10

-1

試試這個:

$('#Button1').click(function() { 
     $('#clickmeupdate').show(); 
}); 
+0

它不工作:/ – user478636 2011-04-02 18:07:44

1

我認爲你的按鈕回發並導致頁面刷新,如果你添加返回false到onclick函數應該擺脫這個問題。

+0

但我需要調用一個函數在同一時間 – user478636 2011-04-02 18:33:06

+0

啊, 我懂了。在這種情況下,您可能需要將其隱藏在postback.add runat = server上,並將其標識爲span。你也可以刪除'display:none'並添加visible = false。然後,當按鈕張貼可見=真正的跨度。 – Porco 2011-04-02 20:14:29