2010-10-30 37 views
1

我從簡單的xml文件填充jQuery手風琴,我可以獲取我的數據並將其附加爲html來模擬手風琴標記。然後我要求手風琴,它不起作用!用xml填充jQuery UI手風琴,綁定問題

我想問題是綁定新創建的數據到DOM,我試過.live()和.delegate沒有成功。

我該如何繼續?

這裏被簡化例如我的代碼(遺憾的是,一些名稱和註釋的是芬蘭:-))這裏是鏈接http://www.equstom.fi/hanuri.html

$('#valitsija').click(function() { 
$.get('http://www.equstom.fi/kurssit.xml', function(data) { 
    $('#accordion').empty(); 
    $(data).find('Kurssi').each(function() { 
    var $kurssi = $(this); 
    var html = '<div>'; 
    html += '<h3><a href="#">' + $kurssi.find('KurssinNimi').text() + '</a></h3>'; 
    html += '<div>' + $kurssi.find('KurssiKuvaus').text() + '</div>'; 
    html += '</div>'; 
    $('#accordion').append($(html)); 
    }); 
}); 
}); 

/* * ** * ** * ** * haetaankurssit loppu * ** * ** ** * ***/ //手風琴 $( 「#手風琴」)手風琴({標題: 「H3」});

http://www.equstom.fi/hanuri.html 

回答

1

請注意下面我添加的兩行(帶註釋)。您需要銷燬並重新創建手風琴。

$('#valitsija').click(function() { 
    $.get('http://www.equstom.fi/kurssit.xml', function(data) { 

     //you need to destroy the accordion first 
     $('#accordion').accordion("destroy"); 
     $('#accordion').empty(); 

     $(data).find('Kurssi').each(function() { 

      var $kurssi = $(this); 
      var html = '<div>'; 
      html += '<h3><a href="#">' + $kurssi.find('KurssinNimi').text() + '</a></h3>'; 
      html += '<div>' + $kurssi.find('KurssiKuvaus').text() + '</div>'; 
      html += '</div>'; 
      $('#accordion').append($(html)); 

     }); 

     //you need to re-make the accordion 
     $("#accordion").accordion({ header: "h3" }); 
    }); 
}); 

我建議將#accordion存儲到一個變量中,因此您不必繼續搜索它。這被稱爲緩存。 (我知道它不是你的問題,但是我認爲我會提供這個建議)。事情是這樣的:

$('#valitsija').click(function() { 
    $.get('http://www.equstom.fi/kurssit.xml', function(data) { 

     var acc = $('#accordion'); 
     //you need to destroy the accordion first 
     acc.accordion("destroy"); 
     acc.empty(); 

     $(data).find('Kurssi').each(function() { 

      var $kurssi = $(this); 
      var html = '<div>'; 
      html += '<h3><a href="#">' + $kurssi.find('KurssinNimi').text() + '</a></h3>'; 
      html += '<div>' + $kurssi.find('KurssiKuvaus').text() + '</div>'; 
      html += '</div>'; 
      acc.append($(html)); 

     }); 

     //you need to re-make the accordion 
     acc.accordion({ header: "h3" }); 
    }); 
}); 

Proof that it works

+1

謝謝你,謝謝你,謝謝你,我一直在通宵試圖解決這個問題,但我解決了錯誤的問題!謝謝! – 2010-10-30 04:51:58

+0

不客氣。請接受我的解決方案作爲答案。 – pinkfloydx33 2010-10-30 04:57:29