JQueryUI llamando .accordion dos veces en una identificación

Estoy tratando de usar AJAX para generar dinámicamente un acordeón JquerUI basado en lo que está seleccionado en un cuadro. Actualmente tengo

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

Ahora, esto funciona la primera vez que cambio mi selección, pero después vuelve a HTML sin formato. Como si la llamada a .accordion () nunca se hubiera realizado. Supongo que esto tiene algo que ver con que JQuery no quiera que formatee algo dos veces, pero realmente no tengo idea.

preguntado el 09 de enero de 11 a las 00:01

1 Respuestas

Intenta destruir el acordeón antes de vaciar el div y empezar de nuevo:

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

MÁS INFORMACIÓN .

¡Buena suerte!

Respondido el 09 de enero de 11 a las 04:01

Ah, excelente. Había buscado un método para destruirlo, pero no esperaba que fuera un parámetro de .accordion, ¡gracias! - Ben

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.