我在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?