jQuery Accordion ломается после первого клика, когда активно: установлено false - PullRequest
3 голосов
/ 14 января 2011

У меня на сайте уже некоторое время был аккордеон jQuery, и он работал нормально, пока я не проверил его сегодня, и он сломался.Я не трогал HTML уже несколько недель.Я снова и снова просматривал документацию по аккордеону , и, похоже, ничего не изменилось, поэтому я понятия не имею, что происходит.

У меня был аккордеон "активныйmsgstr "свойство установлено в" false ", чтобы аккордеон не отображал активный раздел при загрузке документа.У меня также был «складной» установлен в «истина», как указано в документации.Просто чтобы убедиться, что это не был еще один элемент на странице, я создал совершенно новую страницу, содержащую только самые основные элементы аккордеона, и она все равно не будет работать.

Проблема в том, что послещелчок по первому разделу аккордеона, нажатие по любому другому не работает - вы застряли с открытым разделом.Я заметил, что удаление свойства «active» в целом решило эту проблему, но затем, конечно, есть активная секция, открытая при загрузке документа, которая мне не нужна.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
  $(document).ready(function() {
    $("#accordion").accordion({active: false, alwaysOpen: true, autoHeight: false, collapsible: true});
  });
</script>
</head>
<body>
<div id="accordion">

    <p><a href="#">1</a></p>
    <div>this</div>

    <p><a href="#">2</a></p>
    <div>isn't</div>

    <p><a href="#">3</a></p>
    <div>working</div>

    <p><a href="#">4</a></p>
    <div>correctly</div>

</div>
</body>
</html>

Я также заметил, что если яудалить active: false и оставить свертываемым: true, я могу только «свернуть» секцию дважды, и затем происходит то же самое - секции блокируются и перестают сворачиваться / открываться.

Ответы [ 2 ]

3 голосов
/ 14 января 2011

Ну, я сразу увидел следующую проблему:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

Не указав ревизию (последняя третья цифра в версии), вы автоматически получитеобслуживал последнюю версию jQuery и jQuery UI.Так почему он вдруг перестал работать для вас, потому что пользовательский интерфейс jQuery был обновлен, и в пользовательский интерфейс были внесены изменения.

Лучший способ решить эту проблему - указать ревизию.Идите вниз от текущей версии (1.8.7) и ниже, пока она не будет работать для вас.Например, открытие alwaysOpen было удалено или изменено.Вы должны проверить документы и посмотреть, какие опции доступны.

Кроме того, вы можете попробовать это, над которым я работаю jsFiddle :

$(function(){
    $("#accordion").accordion({
        active: false,
        autoHeight: false,
        collapsible: true
    });
});
0 голосов
/ 18 декабря 2014

heightStyleType

Управляет высотой аккордеона и каждой панели.Возможные значения:

  • "auto" : все панели будут установлены на высоту самой высокой панели.

  • "fill" : увеличить до доступной высоты на основе родительской высоты аккордеона.

  • "content" : каждая панель будет тольковысокий по содержанию.

Пример кода:

$(function(){
    $("#accordion").accordion({
       active: false,
       heightStyle: "content",
       collapsible: true
    });
});
...