我试图在单击时展开消息,并在单击特定元素时折叠它们。我正在使用两种不同的类,一种用于元素折叠时,另一种用于显示整个消息时。
问题:按预期单击时,元素将展开,但是当我单击折叠元素时,什么也没有发生(类未更改)。
下面显示了使用的html / jquery / css的简化版本:
<div id="content">
<div id="messages">
<div class="collapsed_message">
<!-- couple of other elements go here see jsfiddle-->
<div class="message_content">
Message goes here
</div>
<span class="collapse_bar">
<span class="re_collapse">[collapse]</span>
</span>
</div>
</div>
</div>
CSS:
.collapsed_message{
overflow:hidden;
}
.entire_message{
// other styling here
}
javascript / jquery:
$(document).ready(function () {
$(".collapsed_message").click(function () {
$(this).addClass('entire_message').removeClass("collapsed_message");
});
$(".re_collapse").click(function () {
$(this).parent().parent().addClass("collapsed_message").removeClass('entire_message');
});
});
有关代码的完整副本,请参见jsfiddle:http : //jsfiddle.net/8vDZb/
首先,我建议您使用Jquery-ui Accordion之类的插件。
如果您真的想知道这里出了什么问题:
您在.collapsed_message
课堂上有一个听众。单击该项目后,将调用单击的回调并删除该类。但是,侦听器仍处于插入状态,因此当您单击[collapse]时,由于.re_collapse
包含在.collapsed_message
元素中,因此再次调用了该侦听器。
这意味着两个回调都被触发。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句