Сделать JQuery Accordion прокрутить все панели? - PullRequest
1 голос
/ 02 мая 2011

Я хочу взять свой 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 ]

1 голос
/ 03 мая 2011

Как насчет этого, используя 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);
});
0 голосов
/ 03 мая 2011

Поддерживает несколько активаций: http://jsfiddle.net/morrison/v2FCJ/.

Однако ваш код вызывает вторую активацию до того, как первая будет выполнена. Аккордеон явно не поддерживает команды очередей.

...