我正在使用 mjsarfattis nestedSortable 插件来构建分层数据结构。有没有办法防止项目被嵌套?一个例子:
phase 1
group
item
item
subgroup
item
item
item
item
item
item
item
phase 2
group
item
item
subgroup
item
item
item
item
如您所见,(子)组或项目可以嵌套在阶段内,但阶段本身不应嵌套在另一个阶段或(子)组内。
对于这种情况,我使用了处理这个函数的“mustBeRoot”属性:_isAllowed,它已经被修改了一点:
_isAllowed: function(parentItem, levels) {
var o = this.options;
// Are we trying to nest under a no-nest or are we nesting too deep?
if (this.currentItem.hasClass(o.mustBeRoot) && this._getLevel(this.placeholder) != 0) {
this.placeholder.removeClass(o.mustBeRoot).addClass(o.errorClass);
if ( this._getLevel(this.placeholder) == 1) {
this.placeholder.removeClass(o.errorClass).addClass(o.mustBeRoot);
}
this.beyondMaxLevels = 1;
} else if (parentItem == null || !(parentItem.hasClass(o.disableNesting))) {
if (o.maxLevels < levels && o.maxLevels != 0) {
this.placeholder.addClass(o.errorClass);
this.beyondMaxLevels = levels - o.maxLevels;
} else {
this.placeholder.removeClass(o.errorClass);
this.beyondMaxLevels = 0;
}
} else {
this.placeholder.addClass(o.errorClass);
if (o.maxLevels < levels && o.maxLevels != 0) {
this.beyondMaxLevels = levels - o.maxLevels;
} else {
this.beyondMaxLevels = 1;
}
}
},
好的,如果我尝试将阶段放到另一个阶段中,这会很好,但是如果我将它拖得更深一点(即在子组中)并放下它,它只会“爬”上一层。然后我在另一个阶段有一个阶段:-/
阶段应该只是根元素!我希望你有任何想法。