【问题标题】:jQuery in update panel not successfully adding cssclass after panel refresh更新面板中的jQuery在面板刷新后未成功添加cssclass
【发布时间】:2013-05-24 21:41:34
【问题描述】:

我有一个 div,当点击它时,通过下面的 jQuery 显示一个隐藏的 asp:textbox。

      function BindEvents() {
          $(document).ready(function () {
             $("#showtextbox").click(function () {  
                 $("#TextBox1").removeClass("hidden"); 
                 $("#TextBox1").addClass("showInline");  
      });

这工作正常,除了更新面板被刷新之后。刷新后,单击“showtextbox”时,文本框保持隐藏状态。我知道 jQuery 正在运行,因为它在调试时被命中。这是我的代码。

  <ContentTemplate>
        <script type="text/javascript">
              Sys.Application.add_load(BindEvents);
        </script>
   </ContentTemplate>

   <asp:textbox runat="server" id="TextBox1"  CssClass="hidden" /> <span id=”showtb8”/>

有什么想法吗?刷新更新面板后如何使文本框可见?我认为在将它添加到 Sys.Application.add_load 之后它会起作用,但事实并非如此。如果有影响的话,这也在向导控件中。

*我应该注意,在显示和隐藏常规 div 时,同样的逻辑可以正常工作。它只是不适用于 asp:textbox。

【问题讨论】:

  • #TextBox1 中是否添加了 showInline 类?
  • @roasted 不,不是。
  • "我知道 jQuery 正在运行,因为它在调试时被命中。"这意味着点击事件被触发,对吧?还是我理解错了?
  • 是的,点击事件被触发了。
  • 在点击处理程序中给你什么: $("#TextBox1").length ???我不使用asp,但我听说它可以将某些属性更改为id。

标签: jquery asp.net updatepanel wizard-control


【解决方案1】:

在 ajax 调用之后,如果您使用常规绑定,事件绑定将会丢失。 试试jquery的on函数。

         $("#showtextbox").on('click',function () {  
             $("#TextBox1").removeClass("hidden"); 
             $("#TextBox1").addClass("showInline");  
          });

【讨论】:

  • 好吧,如果我理解你的说法,你甚至没有在这里使用委托
  • @user1 on 函数给了我同样的结果
  • 渲染后可以firebug并检查按钮的id吗?如果按钮在控件或母版页内,它会更改 id。
  • “按钮”的id在渲染后保持不变。
猜你喜欢
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 2014-03-09
  • 2012-07-09
相关资源
最近更新 更多