【发布时间】:2013-02-14 18:26:27
【问题描述】:
我有以下 HTML:
<asp:UpdatePanel ID="upPanelA" runat="server" >
<ContentTemplate>
<ul class="MailBoxesItems">
<li>
<div id="InboxSelection" runat="server" class="MailLinkContent" >
</div>
</li>
<li>
<div id="UnreadSelection" runat="server" class="MailLinkContent">
</div>
</li>
<li>
<div id="SentSelection" runat="server" class="MailLinkContent">
</div>
</li>
</ul>
</ContentTemplate>
</asp:UpdatePanel>
当我点击 div 时,我使用以下脚本来选择它: 此脚本首先从所有 div 中删除所有“SelectedMail”类,然后 将“SelectedMail”类添加到选定的 div。
$('.MailBoxesItems li div.MailLinkContent').click(function () {
$('.MailBoxesItems li div.MailLinkContent').removeClass('SelectedMail');
$(this).addClass('SelectedMail');
});
这是 CSS:
.SelectedMail {
background-color:#f5f5f5;
}
在回发后不知何故导致jQuery的addClass分配丢失的问题。
【问题讨论】:
-
如果你给元素 1 添加一个类并用元素 2 替换元素 1,元素 2 将没有你添加到元素 1 的类。 addClass 分配不会丢失,你只是替换元素完全由一个新元素组成,该元素还没有该类。
-
@KevinB 我没有关注你,如果我只在点击事件中添加这一行: $(this).addClass('SelectedMail');它仍然具有相同的效果。
-
@Kevin B 请注意,如果我使用 .css 属性更改文本的颜色,它仍然会产生相同的效果,我认为我的代码没有错,我认为它有问题部分/回发。
-
这样想……如果你有一篮子苹果,拿出一个,你就有一个苹果。你咬一口那个苹果。如果你把那个苹果扔掉然后再拿一个,新苹果不会被咬一口。这就是这里发生的事情。元素 1(您在单击时添加类的那个)不再存在,它已被元素 2 完全替换。元素 2 尚未被单击,因此它还没有类。
-
@Kevin B 感谢您的帮助,我从一开始就了解到,在每次回发时,元素都会被替换,我想这是怎么回事?如果是这样,您知道我该如何解决这个问题吗?谢谢。
标签: jquery asp.net asynchronous updatepanel postback