我在C#中具有以下内容:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <span id="header" class="hideMe">
            (other irrelevant tags and controls)
        </span>
        <div>
            (other irrelevant tags and controls)
        </div>
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSubmit" />
    </Triggers>
</asp:UpdatePanel>


和下面的jQuery

if ($) {
  $(document).ready(function () {

    $('#header').click(function ($e) {
      if ($(this).hasClass('hideMe')) {
        $('#header').removeClass('hideMe');
        $('#header').addClass('showMe');
      }
      else {
        $('#header').removeClass('showMe');
        $('#header').addClass('hideMe');
      }
    }

  });
}


jQuery可以正常工作(即,如果我单击标题范围,并且hideMe类是当前的,那么它将删除hideMe并添加showMe,反之亦然)。

但是,当我单击btnSubmit时,将发生异步回发,并导致标头跨度重置为其原始状态(这将应用了hideMe类)。

如何使标题范围保持在单击提交按钮时的状态,而又不恢复到页面加载时的状态?

最佳答案

对我有用的是:

$(document).ready(function() {
    // bind your jQuery events here initially
});

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function() {
    // re-bind your jQuery events here
});


取自:jQuery $(document).ready and UpdatePanels?

10-06 07:55