将元素添加到jquery accordion小部件

时间:2011-10-19 10:24:52

标签: jquery jquery-ui

我有一个jquery-ui手风琴小工具列出项目部分,它们工作正常(它们也是可排序的)。但是用户可以使用html输入元素添加项目部分。

我想将这个新元素添加到手风琴小部件中。

我的方法如下:销毁手风琴和可排序小部件,然后克隆小部件的第一个元素并将其添加到正在克隆的元素中,以便新元素成为第一个元素。之后,再次使小部件再次手风琴和可排序。

它确实重新创建了小部件,但它不包含添加的元素!我不明白为什么不......

html被转换为小部件:

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

1 个答案:

答案 0 :(得分:0)

好的,有时解决方案可能非常明显。问题在于使用prependTo()函数。它应该是:insertBefore()/ Solved