JQuery Аккордеонная настройка активна - PullRequest
5 голосов
/ 11 сентября 2009

У меня есть jQuery аккордеон на странице в приложении ASP: Net MVC, в котором я хочу установить активный аккордеон во время выполнения.

Мой код выглядит следующим образом:

<script type="text/javascript">
    $(document).ready(function() {
        var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
        alert("Setting active index to " + accordionindex);
        $("#accordion").accordion('activate', accordionindex );
    });
</script>

Вы увидите, что последняя строка устанавливает активный аккордеон. Когда я использую этот код , он всегда действует так, как я использовал active: false и ВСЕ аккордеоны закрыты , даже если предупреждение отображает правильное значение времени выполнения.

Я также попытался просто использовать то же самое:

$ ("# accordion"). Accordion ('активировать', $ ("# UIPViewModel_ActiveAccordion"). Val ());

Когда я меняю последнюю строку на:

$ ("# аккордеон"). Аккордеон ("активировать", 2); (т.е. жестко закодировано). Это всегда работает правильно!

Может кто-нибудь увидеть, что не так? Где я делаю свою ошибку ??

Ответы [ 3 ]

9 голосов
/ 11 сентября 2009

Переменная, возвращаемая val(), является строкой, и аккордеон ожидает число. Попробуйте:

    var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
    accordionindex = parseInt(accordionindex, 10);  // convert a string to a number
    alert("Setting active index to " + accordionindex);
    $("#accordion").accordion('activate', accordionindex );
6 голосов
/ 11 сентября 2009

Просто чтобы расширить решение Кена:

<script type="text/javascript"> 
$(function () {
    var accordionindex = Number($("#UIPViewModel_ActiveAccordion").val());
    alert("Setting active index to " + accordionindex);
    $("#accordion").accordion('activate', accordionindex );
});
</script>

Вам действительно нужно использовать parseInt только в том случае, если есть вероятность, что val () когда-либо будет отличаться от обычных цифр (например, если он имеет «index 4» для значения). И вы можете разыграть его как цифру, пока вы устанавливаете переменную.

2 голосов
/ 04 ноября 2015

для более новых версий, способ активировать (и деактивировать) панель изменилась:

jQuery(".selector").accordion("option", {active: index});

Мне потребовалось время, чтобы понять, что я не сошел с ума - jQueryUI 1.8 поддерживает метод активации. Они избавились от него за 1,9 и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...