Impostazione jQuery Accordion attiva
Domanda
Ho una fisarmonica jQuery in una pagina in ASP: applicazione Net MVC in cui voglio impostare la fisarmonica attiva in fase di esecuzione.
Il mio codice è il seguente:
<script type="text/javascript">
$(document).ready(function() {
var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
alert("Setting active index to " + accordionindex);
$("#accordion").accordion('activate', accordionindex );
});
</script>
Vedrai che l'ultima riga imposta la fisarmonica attiva. Quando utilizzo questo codice funziona sempre come se avessi usato active: false e TUTTE le fisarmoniche sono chiuse anche se l'avviso mostra il valore di runtime corretto.
Ho anche provato a usare semplicemente quanto segue:
$ (" # accordion "). accordion ('activ', $ (" # UIPViewModel_ActiveAccordion "). val ());
Quando cambio l'ultima riga in:
$ (" # accordion "). accordion ('activ', 2); (ovvero hard-coded). Funziona sempre correttamente!
Qualcuno può vedere cosa c'è che non va? Dove sto facendo il mio errore ??
Soluzione
La variabile restituita da val ()
è una stringa e la fisarmonica si aspetta un numero. Prova:
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 );
Altri suggerimenti
Solo per estendere la soluzione di Ken:
<script type="text/javascript">
$(function () {
var accordionindex = Number($("#UIPViewModel_ActiveAccordion").val());
alert("Setting active index to " + accordionindex);
$("#accordion").accordion('activate', accordionindex );
});
</script>
Devi solo usare il parseInt se c'è qualche possibilità che val () sarà mai qualcosa di diverso dalle cifre normali (come se avesse "indice 4" per il valore). E puoi lanciarlo come una cifra mentre imposti la var.
per le versioni più recenti, il modo di attivare (e disattivare) il pannello è cambiato:
jQuery(".selector").accordion("option", {active: index});
Mi ci è voluto un po 'per capire che non ero pazzo - jQueryUI 1.8 supporta il metodo di attivazione. Si sono liberati di esso per 1.9 e versioni successive.