动态展开和折叠jquery
问题描述:
我几乎完成了这个,所以我有一个最终的错误,我需要你的帮助搞清楚。动态展开和折叠jquery
我就这个问题首先启动...
方案3不起作用。当你点击“全部展开”并点击一个问题来折叠答案时,它工作得很好。现在的问题是,现在点击“全部折叠”,它将扩大所有的答案。我希望它实际上崩溃所有的答案就像“全部崩溃”链接说,它应该而不是扩大所有的答案。
另2种情景工作得很好,它们是:
方案1级的作品。 (刷新页面以重置手风琴)当您单击“全部展开”时,它将更改为“全部折叠”。答案将相应扩展,并且活动问题状态将适当地交换。当您单击“全部折叠”时,所有问题/答案将返回到其默认状态。
情景2的作品。 (刷新页面重置手风琴)当您先点击一个问题,然后点击“全部展开”,它将展开所有答案,当您点击“全部折叠”时,它会折叠所有答案。
代码
$(document).ready(function()
{
$('.question').click(function()
{
if($(this).next().is(':hidden') != true)
{
$(this).removeClass('active');
$(this).next().slideUp('normal');
}
else
{
$('.question').removeClass('active');
$('.answer').slideUp('normal');
if($(this).next().is(':hidden') == true)
{
$(this).addClass('active');
$(this).next().slideDown('normal');
}
}
});
$('.answer').hide();
$('.swap').click(function()
{
if($('.question').next().is(':hidden') != true)
{
$('.answer').slideUp('normal');
$('.question').removeClass('active');
$(this).text($(this).text() == 'Expand All' ? 'Collapse All' : 'Expand All');
}
else
{
$('.answer').slideDown('normal');
$('.question').addClass('active');
$(this).text($(this).text() == 'Expand All' ? 'Collapse All' : 'Expand All');
}
}
);
});
谢谢您的帮助!
真诚, 埃文
答
我会检查针对当前的文本,以消除任何混乱,通过更换此检查:
if($('.question').next().is(':hidden') != true)
有了这一个:
if($(this).text() == 'Collapse All')
@Nick - LOL!当你回答我的问题时,我正在读你的生物。你解决了我没有想到的问题......谢谢尼克。我感谢您的支持! – Evan 2010-10-10 21:14:06
@尼克 - 我有一个跟进问题给你。当点击“全部展开”并单击一个问题以将其折叠时,只要点击“展开全部”,就可以将其展开/折叠,只有这样才能防止意外折叠所有问题。由于此更改(刷新页面以重置手风琴),如果您现在单击初始问题,然后单击第二个问题,则第二次单击不会折叠上一个问题。每次点击后,如何在这种情况下解决以前的问题? 你可以在这里演示它:http://jsbin.com/ucalu3/9/ – Evan 2010-10-11 16:16:42
@Evan - 你可以做到这一点,并缩短你的代码使用切换功能,像这样:http://jsbin.com/ucalu3/11 – 2010-10-11 16:17:10