Pergunta

Eu tenho um acordeão jQuery em uma página em ASP:. Aplicação MVC Net em que deseja definir o acordeão ativo em tempo de execução

Meu código é o seguinte:

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

Você vai ver a última linha define o acordeão ativo. Quando eu uso este código sempre age como se eu usei ativo:. Falso e TODOS os acordeões estão fechados mesmo que o alerta exibe o valor de tempo de execução correta

Eu também tentei simplesmente usando o seguinte, que é o mesmo:

$ ( "# acordeão") acordeão ( 'Ativar', $ ( "# UIPViewModel_ActiveAccordion") val ().);.

Quando eu mudar a última linha para:

$ ( "# acordeão") acordeão ( 'Ativar', 2).; (Isto é, codificados). Ele sempre funciona corretamente!

Alguém pode ver errado Notícias Agenda? Onde eu estou fazendo o meu erro ??

Foi útil?

Solução

A variável a ser devolvido pelo val() é uma string e acordeão está esperando um número. Tente:

    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 );

Outras dicas

Apenas para estender a solução de Ken:

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

Você realmente só precisa usar o parseInt se há alguma chance de que a val () nunca vai ser algo diferente de dígitos normais (como se tivesse "índice de 4" para o valor). E você pode lançá-lo como um dígito, enquanto você definir o var.

para versões mais recentes, o caminho para ativar (ou desativar) o painel mudou:

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

Levei um tempo para descobrir que eu não era louco - jQueryUI 1.8 suporta o método activate. Eles se livraram dele para 1.9 e acima.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top