2011-01-09 3 views
5

Я пытаюсь использовать AJAX для динамического создания аккордеона JquerUI на основе того, что выбрано в поле. В настоящее время яJQueryUI, вызывающий .accordion дважды на одном id

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

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

Теперь это работает первый раз, когда я изменить свой выбор, но после этого он возвращается в обычный старый неформатированный HTML. Как будто вызов .accordion() никогда не был выполнен. Я предполагаю, что это связано с тем, что JQuery не хочет, чтобы я форматировал что-то дважды, но я действительно понятия не имею.

ответ

6

Попытка уничтожить аккордеоне, прежде чем очистить DIV и начать заново:

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

Подробнее here.

Удачи вам!

+0

Ах отлично. Я искал способ уничтожить его, я просто не ожидал, что это будет параметр .accordion, спасибо! – Ben

Смежные вопросы