2011-01-09 11 views
5

Sto provando a utilizzare AJAX per generare dinamicamente una fisarmonica JquerUI in base a ciò che è selezionato in una casella. Attualmente hoJQueryUI chiamare .accordion due volte su un id

<div style="display:none" id="testselect"> 
</div> 

Con JS

$("#courseselect").change(function() { 
       $("#testselect").html(""); // Empty any previous data 
       $("#testselect").css("display", "block"); // Display it if it was hidden 
       $.getJSON('json.php?show=tests&courseid=' + $(this).val(), function(data) { 
       for(x in data) 
       { 
        $("#testselect").append("<h3 value=\"" + data[x].uno + "\"><a href=\"#\">" + data[x].name + "</a></h3>"); 
        $("#testselect").append("<div>Foo</div>"); 
       } 
       $("#testselect").accordion({ change:function(event, ui) { courseid = ui.newHeader.attr("value"); 
       } }); 
      }); 
     }); 

Ora questo funziona la prima volta che cambio il mio selezione, ma dopo che ritorna alla pianura vecchio non formattato HTML. Come se la chiamata a .accordion() non fosse mai stata eseguita. Immagino che questo abbia qualcosa a che fare con JQuery, non volendo che formassi qualcosa due volte, ma non ne ho idea.

risposta

6

cercare di distruggere la fisarmonica prima che si svuota il div e ricominciare da capo:

$("#courseselect").change(function() { 
    $("#testselect") 
     .accordion("destroy") 
     .empty() // equivalent to .html(""); 
    $.getJSON(... 

Maggiori informazioni here.

Buona fortuna!

+0

Ah eccellente. Avevo cercato un metodo per distruggerlo, non mi aspettavo che fosse un parametro di .accordion, grazie! – Ben

Problemi correlati