无效/可排序的序列化列表,而无需从列表中删除原始项目
Nestable / sortable serialized list without removing the original item from list
我已经使用Bushell(https://github.com/dbushell/Nestable)的Nestable JS一段时间了,并且有很多可用的代码可以从Mysql生成菜单,但是我需要将可用选项从一个列表拖动到另一个列表而不将其从源中删除。
我只想将其附加到列表第二个列表中。这与 Nestable 有关是否合理,或者我是否需要运行回 jquery draggable 才能获得"克隆"选项?我找到的演示说明:http://jsfiddle.net/Aub7x/
在这个演示中,这很容易,除非当你使用$( ".items" ).sortable( "toArray" );
它不会返回我可以用来识别父子关系的嵌套格式。否则,它是一个比 Bushell 库更干净的代码库。http://jsfiddle.net/trevordowdle/6CDSB/1/
由于我链接到JSFiddle,因此需要发布一些代码。在 Bushell 代码中,我正在努力查找从源中删除项目的位置,但在这里没有看到它:
list.el.on('click', 'button', function(e) {
if (list.dragEl) {
return;
}
var target = $(e.currentTarget),
action = target.data('action'),
item = target.parent(list.options.itemNodeName);
if (action === 'collapse') {
list.collapseItem(item);
}
if (action === 'expand') {
list.expandItem(item);
}
});
var onStartEvent = function(e)
{
var handle = $(e.target);
/* callback for beforeDragStart */
list.el.trigger('beforeDragStart', [handle]);
if (!handle.hasClass(list.options.handleClass)) {
if (handle.closest('.' + list.options.noDragClass).length) {
return;
}
handle = handle.closest('.' + list.options.handleClass);
}
if (!handle.length || list.dragEl) {
return;
}
list.isTouch = /^touch/.test(e.type);
if (list.isTouch && e.touches.length !== 1) {
return;
}
e.preventDefault();
list.dragStart(e.touches ? e.touches[0] : e);
/* callback for dragStart */
var item = list.dragEl.find('.'+list.options.itemClass);
list.dragRootEl.trigger('dragStart', [
item, // List item
list.el // Source list
]);
};
我能够在这里想出一个解决方案:https://github.com/dbushell/Nestable/issues/158
您可以将"克隆"类添加到要从一个列表拖动到另一个列表的任何内容中。
把这个放在第 325 行周围:
if ($(dragItem[0]).hasClass("clone"))
{
var cln=dragItem[0].cloneNode(true);
dragItem[0].parentNode.replaceChild(cln, dragItem[0]);
$(dragItem[0]).removeClass("clone")
dragItem.after(this.placeEl);
}else{
dragItem.after(this.placeEl);
dragItem[0].parentNode.removeChild(dragItem[0]);
}
相关文章:
- 从多选列表中删除
- 如何在NativeScript中从列表中删除项目时设置动画
- 正在从列表中删除对象
- orderBy$filter在项目删除(拼接)后阻止ng重复列表更新
- 为什么jQuery appendTo会删除现有的列表项
- 如何删除下拉列表中的部分文本
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 编写删除数组并添加到列表的函数
- 删除或隐藏下拉列表中的一些值,该列表由使用JavaScript的存储过程填充
- 使用jquery如何自动删除下拉列表中的第一个空白选项(如果它依赖于另一个选项)
- 如何删除列表中的对象?Javascript nodejs和下划线
- 从angularjs中的下拉列表中删除未定义的值
- jQueryUI可排序-从可排序列表中删除li
- 为什么更改对象列表中的类名会将iten从列表中删除
- 删除基于先前下拉列表选择的“选择下拉列表”选项
- 使用indexOf从列表中删除对象
- 下拉列表删除类不起作用
- 我的播放器播放列表删除功能不起作用
- Telerik 剑道下拉列表删除项目
- 剑道ui下拉列表删除特定项目