【问题标题】:JQUERY .show() function in ASP.NETASP.NET 中的 JQUERY .show() 函数
【发布时间】:2011-07-28 08:22:32
【问题描述】:

我使用的是 JQuery 1.5.2。

使用 .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>

【问题讨论】:

  • 我不使用 ASP 的服务器控件,但我有点猜想按钮上的runat="server" 进入它...
  • 我认为 TJ 有一个观点。查看“查看源代码”,按钮 ID 可能不同。在这种情况下,使用 ClientId 属性引用 Id。
  • 干杯伙伴,asp控件不起作用,但html工作正常

标签: jquery asp.net


【解决方案1】:

按钮正在回发,当它回发时,显示被设置回无。

您可以通过不使用 asp.net 按钮来停止回发,只需使用 html 按钮或添加 onClick 事件并返回 false。

编辑 - 我已经调整了我的答案,因为在您提到的 cmets 中您需要按钮单击事件。

您仍然可以通过使用 OnClientClick 来运行 jQuery 来执行此操作。 See this for more info.

但是,由于先发生 OnClientClick,然后发生 onClick,因此您仍然会遇到回发重置跨度以不显示的问题。

我认为您真的想为此设置一种 AJAX 类型的解决方案,或者只需将您的 span 设置为 runat=server 并在按钮后面的代码中将其设置为可见。

我怀疑您最好查看 Asp.Net 网络表单中的 UpdatePanel / AJAX stuff。您可以使用 jQuery AJAX solution 完成所有这些操作,但使用 Web 表单 UpdatePanel 可能更容易。

【讨论】:

  • 但问题是我也在 button1_click 事件中调用函数
【解决方案2】:

我认为您的按钮正在回发并导致页面刷新,如果您将 return false 添加到 onclick 函数,它应该可以解决问题。

【讨论】:

  • 但是我需要同时调用一个函数
  • 啊,我明白了。在这种情况下,您可能希望将其隐藏在 postback.add runat=server 和跨度的 id 上。您也可以删除“显示:无”并添加可见=假。然后,当按钮回发时,在 span 上设置 visible=true。
【解决方案3】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多