用jQuery slideToggle关闭打开的div

时间:2011-08-01 20:00:11

标签: javascript jquery slidetoggle

我是JS和jQuery newb所以请耐心等待。我有一些脚本工作,但它不能完全按照我的意愿去做,我无法理解。基本的想法是我单击一个链接,然后使用slideToggle打开一个div。棘手的部分是在打开一个新的div之前关闭一个先前打开的div,我能做的最好的就是隐藏前一个div。试图切换前一个div大概不起作用,因为我没有专门针对div,而是告诉它在打开新的div之前关闭所有div。我遇到的另一个问题是同一页面上的链接似乎被禁用,这似乎是由于“return false”命令,但我不知道如何在我点击时将页面滚动到顶部如果我不使用该命令,请滑动链接。谢谢你的帮助。

以下是我正在使用的内容:http://jsfiddle.net/NkX2Z/

3 个答案:

答案 0 :(得分:1)

您必须执行更多控制才能使外部链接正常工作。

这是我的解决方案,实际上我不知道它是否是您正在寻找的但也许它可以帮助您

http://jsfiddle.net/gb9M7/1/

if($("#"+$(this).attr("class")).length && !$("#"+$(this).attr("class")).is(':visible'))

此处的条件检查对应于a元素的div是否存在,如果存在,则检查该div是否尚未打开。 当页面状态满足那些约束时,执行if块。

更新1

这是带滑动时间的代码:

http://jsfiddle.net/gb9M7/2/

var time = 1200;
.slideUp(time);
.slideDown(time);

更新2

这是改进版本,它通过滚动页面预先设置了'#'的链接:

http://jsfiddle.net/gb9M7/3/

if($(this).attr('href') == '#')
   return false;

答案 1 :(得分:0)

答案 2 :(得分:0)

您正在使用“a”选择器选择页面中的所有链接。并且您返回false,这会禁用所有这些链接。我建议用div元素包装链接并给它id或class,然后将事件附加到那些链接。

你正在建设的内容与手风琴http://jqueryui.com/demos/accordion/非常接近。也许那就是你想要的?