Javascript 使用jQuery UI sortable插件添加项目后刷新列表

Javascript 使用jQuery UI sortable插件添加项目后刷新列表,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,好的,我有一个嵌套的可排序列表,每个项目都是一个容器和一个可排序元素 我面临的问题是,每当我添加新元素时,我都希望jQuery用新项刷新其内部状态。 根据文档,必须调用作为参数'refresh'传递的可排序方法,但我仍然无法使其工作 示例代码: JavaScript: $(document).ready(function() { var list = $('#mycontainer ul').sortable({ connectWith: '#mycontainer u

好的,我有一个嵌套的可排序列表,每个项目都是一个容器和一个可排序元素

我面临的问题是,每当我添加新元素时,我都希望jQuery用新项刷新其内部状态。 根据文档,必须调用作为参数'refresh'传递的可排序方法,但我仍然无法使其工作

示例代码:

JavaScript:

$(document).ready(function() {
    var list = $('#mycontainer ul').sortable({
        connectWith: '#mycontainer ul',
        placeholder: 'myplaceholder'
    });

    function addElement(text) {
        $('#mycontainer > ul').append('<li>' + text + '<ul></ul></li>');
        list.sortable('refresh');
    }

    addElement('yolo');
});
尝试将一个预先存在的项目拖到新添加的项目下,即使在刷新后也无法执行此操作。

我找到了一个便宜的修复方法:

我在同一标签上再次调用sortable,重新初始化sortable插件,如下所示:

$('#mycontainer ul').sortable({
    connectWith: '#mycontainer ul',
    placeholder: 'myplaceholder'
});

这帮助了我,我没有意识到我在做什么:我在添加一个全新的容器元素,而不是添加到父可排序容器中。这个新元素从未设置过,我的控制台实际上已经通知我了!在把头从后面拉出来后,我意识到了这一点。因此,我为可排序选项创建了一个更高范围的对象,然后在调用AJAX后可以重用这些选项。我希望这对其他人有帮助!但这真的有效吗?我也遇到了同样的问题,
refresh
除了返回一个错误之外,似乎什么都不做(顺便说一句,这个错误是不可修复的,它似乎不适用于嵌套元素)。再次复制粘贴整个
sortable()
函数似乎有点不切实际,因为我的规则比上面示例中的4条规则要大。谁有更好的答案?
#mycontainer > ul {
    display: block;
}

#mycontainer > ul ul {
    min-height: 10px;
    padding-left: 20px;
}

.myplaceholder {
    background-color: yellow;
}
$('#mycontainer ul').sortable({
    connectWith: '#mycontainer ul',
    placeholder: 'myplaceholder'
});