制作一个JQuery Accordion滚动浏览所有窗格?

时间:2011-05-02 19:52:16

标签: javascript jquery jquery-ui accordion

我想接受我的JQuery Accordion,并且在最后一个元素上打开它,让每个窗格连续下拉(以向用户说明还有其他可供内容查看的内容窗格)。我可以使用Accordion.accordion(“激活”,索引)来更改打开的窗格,但它只能工作一次(连续调用似乎没有任何效果?)。

现在,下面的代码初始化了手风琴并激活了第一个窗格,但对第二个窗格没有任何影响。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Page</title>

<link rel="stylesheet" href="stylesheet.css" type="text/css" />

<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.12.custom.min.js"></script>
<script type="text/javascript">
    $(function () {
        nyah = $("#accordion").accordion({
            event: "mouseover",
            animated: "bounceslide"
        });
        nyah.accordion("activate", 1);
        for (var i = 0; i < 1000; i++) {
            i++;
        }
        nyah.accordion("activate", 2);
    });
    </script>

</head>
<body>
<div id = "accordion">
<h3><a href="#">One</a></h3>
<div><img src="1.png" alt="" /></div>
<h3><a href="#">Two</a></h3>
<div><img src="2.jpg" alt="" /></div>
<h3><a href="#">Three</a></h3>
<div><img src="3.jpg" alt="" /></div>
</div>
</body>

</html>

2 个答案:

答案 0 :(得分:1)

使用setTimeout如何做到这一点。我认为你的问题是你在第一次激活完成之前调用了激活。

http://jsfiddle.net/xgFpD/1/

$(function() {
    var accordionCount = $("#accordion h3").length;

    nyah = $("#accordion").accordion({
        event: "mouseover",
        animated: "bounceslide"
    });



    function doExpand(index) {

        nyah.accordion("activate", index);

        if (index + 1 <= accordionCount) {
            setTimeout(function() {
                doExpand(index + 1);
            }, 1000);
        }
    }

    doExpand(0);
});

答案 1 :(得分:0)

它支持多次激活:http://jsfiddle.net/morrison/v2FCJ/

但是,您的代码在第一次激活之前触发第二次激活。手风琴显然不支持排队命令。