第一次点击时,它按预期工作:
- 类别被改变
- HTML内容从“显示…”更改为“关闭…”
- 内容区域通过slideDown效果展开,
到目前为止还不错。
第二次点击时,...
- 类别更改
- HTML内容从“关闭…”更改为“显示…”
- 内容区域未按预期消失。
第三次点击时,...
- 类别被改变
- HTML内容被更改
- 已显示的内容重新显示,并带有slidedown效果。
因此,除了第2次点击应该隐藏内容之外,一切都正常工作。
以下是jQuery代码:
-
$('.open_user_urls').live('click', function() {
$('#user_urls').slideDown('slow');
$(this).addClass('close_user_urls');
$(this).removeClass('open_user_urls');
$(this).html('Close Search History');
return false;
});
$('.close_user_urls').live('click', function() {
$('#user_urls').slideUp('slow');
$(this).addClass('open_user_urls');
$(this).removeClass('close_user_urls');
$(this).html('Show Search History');
return false;
});
以下是需要翻译的内容:
这是它所作用的HTML:
<h3 class='open_user_urls'>Show Search History</h3>
<div id='user_urls'>
// an OL tag with content
</div>
唯一适用的CSS:
#user_urls { display: none; }
编辑 - 我用下面一个答案提供的等效代码替换了我的jquery代码,但问题仍然存在。因此,原因必须在其他地方。我记得这个代码最初是可以工作的,但后来停止了。我被难住了。现在需要逐步剥离所有其他部分...
编辑2 - 由于错误必须在其他地方,我接受了我的jquery代码的代码改进作为答案。谢谢。
编辑3 - 找到问题的来源。
在#user_urls div内,我有一系列带有以下css的OL:
.url_list {float: left; width: 285px; list-style-position: outside; margin-left: 25px;}
每个有序列表(OL)包含20个URL的列表,应根据需要显示为多列以显示所有URL。
在这些OL标记上删除float:left;会使问题消失。
因此,在显示和隐藏的DIV中包含的内容上设置浮动会导致它根本无法隐藏。为什么会发生这种情况?
编辑4:在#user_urls DIV中添加一个<div>可以使隐藏操作正常工作。