【发布时间】:2011-11-09 04:40:44
【问题描述】:
我正在尝试创建一个 jQuery 可折叠面板,虽然周围有插件,但我还没有找到一个完全符合我要求的插件,我正在尝试使用我找到的各种示例自行开发。虽然它在大多数情况下都有效,但有一点无效,我不知道为什么。
(示例页面位于http://www.thekmz.co.uk/misc/cpanel/index1.html)
它是如何工作的(或者可能不是这样)
HTML
<div id="container">
<div class="collapsiblePanel" title="Example Collapsible Panel">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit... etc</p>
</div>
</div>
Javascript
(function($) {
$.fn.extend({
collapsiblePanel: function() {
return $(this).each(initCollapsiblePanel);
}
});
})(jQuery);
function initCollapsiblePanel() {
if ($(this).children().length == 0) {
$(this).wrapInner("<div></div>");
}
$(this).children().wrapAll("<div class='cpanelContent'></div>");
$("<div class='cpanelTitle'><div>" + $(this).attr("title") + "</div><div class='cpanelToggle'>more</div></div>").prependTo($(this));
$(".cpanelContent", this).hide();
$(".cpanelTitle", this).click(toggleCollapsiblePanel);
}
function toggleCollapsiblePanel() {
$(".cpanelContent", $(this).parent()).slideToggle();
if ($(".cpanelContent", $(this).parent()).is(":hidden")) {
$(".cpanelToggle", this).html('more');
} else {
$(".cpanelToggle", this).html('close');
}
}
CSS
#container {
width:300px;
height:300px;
}
.collapsiblePanel {
width:100%;
}
.cpanelTitle {
position:relative;
width:100%;
cursor: pointer;
cursor: hand;
}
.cpanelToggle {
position:absolute;
top:0px;
right:0px;
font-style:italic;
}
所以它需要一个带有 collapsiblePanel 类的 div 并创建各种嵌套的 div。标题 div 包含标题和一些向右浮动的切换文本,根据内容面板是展开还是折叠,这些文本将是“更多”或“关闭”。
不起作用的位是
if ($(".cpanelContent", $(this).parent()).is(":hidden")) {
在 toggleCollapsiblePanel() 函数中。 div 切换正常,所以看起来我选择了内容 div,但使用它来确定它是否被隐藏(所以我可以更改 cPanelToggleDiv 的文本)总是返回为 false - 这向我表明我只是做得不对。
我在那里(在上面链接的示例页面中)放了很多控制台调用,试图看看发生了什么,但就是看不到它。
任何指出我的绝望/困惑的帮助将不胜感激。
问候 尼莫
【问题讨论】:
-
您可以使用现有的,最适合您的需求,并对其进行修改。也许这会更容易。
-
使用 Chrome,它似乎对我有用。在初始页面加载时控制台显示
isHidden: true,然后打开它后显示isHidden: false。 -
@Wulf - 在某种程度上我正在尝试 - 我已经组合了我发现的 2 个不同的,但结果 div 布局不同,所以我必须使用不同的选择器
-
@Joseph - 看起来是这样,但 isHidden: true 来自初始化函数。所有 isHidden: false 的东西都在 toggleCollapsiblePanel() 函数中,它说 false 不管
标签: jquery jquery-selectors collapse