2011-10-19 39 views
0

我有一個jquery-ui手風琴部件列表項目部分工作正常(他們也可排序)。但是用戶可能會使用html input元素來添加項目部分。添加元素到jquery的手風琴部件

我想在手風琴小部件上添加新元素。

我的方法如下:銷燬手風琴和可排序的小部件,然後克隆小部件的第一個元素,並將其前置到被克隆的元素,以便新元素成爲第一個元素。之後,再讓小部件再次手風琴和排序。

它確實重新創建了小部件,但它不包含添加的元素!我不明白爲什麼不能...

的HTML轉換爲一個widget:

<div id="accordion"> 
     <div> 
      <h3><a href="#">Part</a></h3> 
      <div> 
       Some explaining text 
      </div> 
     </div> 
    </div> 

的JavaScript/jQuery的,這使得第一次加載手風琴也使得排序和手風琴的工作好一起(停止功能):

var stop = false; 
$('#accordion h3').click(function(e) { 
    if (stop) { 
     e.stopImmediatePropagation(); 
     e.preventDefault(); 
     stop = false; 
    } 
}); 
$('#accordion') 
    .accordion({ 
     header: '> div > h3', 
     fillSpace: true 
    }) 
    .sortable({ 
     axis: 'y', 
     handle: 'h3', 
     stop: function() { 
      stop = true; 
    } 
}); 

JavaScript時克隆,並預置元件到窗口小部件,並重新創建插件:

$('#accordion').accordion("destroy").sortable("destroy"); 
$("#accordion > div:first").clone().prependTo("#accordion > div:first"); 
$('#accordion') 
    .accordion({ 
     header: '> div > h3', 
     fillSpace: true 
    }) 
    .sortable({ 
     axis: 'y', 
     handle: 'h3', 
     stop: function() { 
      stop = true; 
     } 
    }); 

回答

0

好的,有時解決方案可能非常明顯。問題在於使用prependTo()函數。它應該是:insertBefore()/已解決