jQuery configuração activa acordeão
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 ??p>
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 ??
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.