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 ??

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top