2

stackoverflow 的好人帮助我完成了部分工作,现在我只需要在终点线上稍微推动一下。

我需要一个切换按钮,它在单击时打开 div(向下滑动),然后在单击时关闭,也可以使用活动类。

但是,如果您单击另一个切换按钮,子 div 会打开并关闭前一个,如果它是打开的。

所以基本上没有一个打开的 div 可以同时打开,一次只能打开一个。

我需要通过锚 id 完成此操作,因为打开 div 与切换按钮无关(它在页面下方)

到目前为止,这不起作用,但所有的 html 都在那里.. http://jsfiddle.net/CkTRa/398/

非常感谢你,如果有人能帮忙,搜索了高低,我发现最近的是这个http://andylangton.co.uk/articles/javascript/jquery-show-hide-multiple-elements/但它还没有关闭当您单击一个新的时打开 div。

4

4 回答 4

5

演示

  $("a").click(function(){
    var myelement = $(this).attr("href")
    $(myelement).slideToggle("slow");
    $(".toggle:visible").not(myelement).hide();

  });

​</p>

于 2012-06-27T10:27:17.547 回答
2

如其他答案中所述,要使 next() 工作,必须更改布局(参见小提琴)之后,要先关闭所有切换 div,您可以使用:

$(".toggle").slideUp("slow");

但为了防止干扰扩展的 div,可以使用 not 来排除该 div:

var div = $(this).next(".toggle");
$(".toggle").not(div).slideUp("slow");
div.slideToggle("slow");

组合小提琴:http: //jsfiddle.net/CkTRa/402/

于 2012-06-27T10:28:37.223 回答
1

这是一个 jsFiddle,它根据锚标记中的 href 获取正确的 div:

基本上:

 $( $(this).find("a").attr('href') ).slideToggle("slow");

编辑:

jsFiddle 隐藏任何打开的,不是当前的

基本上:

var divToToggle = $( $(this).find("a").attr('href') );
$(".toggle:visible").not(divToToggle).hide();
divToToggle.slideToggle("slow");
于 2012-06-27T10:18:28.673 回答
0
<h3 class = "trigger" href="#box1">Heading 1</h3>.

优于:

<h3 class = "trigger"><a href="#box1">Heading 1</a></h3>.

You get display trouble with the second option when the content slides back.

于 2016-05-13T07:50:33.970 回答