Javascript 使用jQuery UI sortable插件添加项目后刷新列表
好的,我有一个嵌套的可排序列表,每个项目都是一个容器和一个可排序元素 我面临的问题是,每当我添加新元素时,我都希望jQuery用新项刷新其内部状态。 根据文档,必须调用作为参数'refresh'传递的可排序方法,但我仍然无法使其工作 示例代码: JavaScript: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
$(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'
});