Nest jQuery UI sortables
Nest jQuery UI sortables
有没有办法嵌套jQuery存储表?就像在嵌套容器中一样,而不是在嵌套列表的意义上。
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="container">
<div class="item"></div>
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="item"></div>
</div>
$('.container').sortable({
connectWith: '.container'
});
http://jsfiddle.net/ExLqv/2/
该示例几乎有效,但是当我删除嵌套容器时,我收到一个错误:
Uncaught HierarchyRequestError: A Node was inserted somewhere it doesn't belong.
我认为这是因为在拖动container
时它位于鼠标下方,因此当我放下它时,它会尝试将其放入自身内部。
我有一个解决方法,虽然不理想,所以问题仍然存在。
$('.container').sortable({
connectWith: '.container:not(.ui-sortable-helper)',
tolerance: "pointer",
cursorAt: { left: -50 }
});
http://jsfiddle.net/ExLqv/8/
问题
当元素既是可排序容器又是可排序容器中的可排序元素时,jQuery 会丢失它。
解决方案
就像将有问题的对象包装在另一个元素中一样简单。小提琴:http://jsfiddle.net/ExLqv/12/
"内部"容器的包装方式如下:
<div class="container-wrapper">
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
您可以避免此问题,因为内部容器本身不再是可排序容器和可排序容器中的可排序对象。相反,可排序对象现在是包装器。请注意,类名容器包装器只是为了说明。您可以删除它,它不会更改功能。
现在,我不知道这种方法是否比您自己提到的解决方法更适合您。我确实觉得某种解决方法是必要的。很多人都遇到过这个问题,似乎普遍认为嵌套可吸收物目前不支持的功能。似乎有一堆插件可以为您解决问题,从我谷歌"jquery 可排序嵌套"的结果来看:)
插件修复:
var sortable = $.widget("ui.sortable", $.ui.mouse, {
_contactContainers: function(event) {
// never consider a container that's located within the item itself
if($.contains(this.currentItem[0], this.containers[i].element[0]) || this.currentItem[0] === this.containers[i].element[0]) {
continue;
}
}
}
要将嵌套的可排序元素创建为可排序容器和可排序元素,需要有一个帮助程序:clone 和占位符。排序时,检查位置占位符是否为 0,然后重新附加占位符以帮助拖动容器知道在哪里插入并避免
Uncaught HierarchyRequestError: Failed to execute 'insertBefore' on 'Node': The new child element contains the parent.
这是对小提琴的测试:http://jsfiddle.net/0umjf5tc/1/
你可以试试!它工作得很好!
$('.container').sortable({
helper:'clone',
connectWith: '.container',
});
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery UI自动完成突然停止工作
- 如何使用skip参数使用angular ui引导进行服务器端分页
- AngularJS UI路由器不能像ng路由器那样工作
- 我可以更改剑道UI网格吗's的外键值
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 停止jQuery UI滑块移动超过给定值
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- Jquery UI自动完成无法工作
- 语义ui如何使用javascript启用或禁用下拉列表
- jquery ui滑块上的滑块值
- jQuery UI可排序-多连接列表拖动
- 如何在Angular UI网格中选择下一行
- 对具有ui typeahead的对象中的值执行orderBy
- AngularJS ui路由器html5模式中断路由
- EJS中的Angularjs-Ui路由器参数
- 使用导航属性创建Kendo UI网格模型的问题
- Nest jQuery UI sortables
- Jquery UI 嵌套了具有多个 UL 的 Sortables