2011-04-02 41 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