我正在使用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;
}
}
},
好吧,如果我尝试将相位放在另一个相位内,这样可以正常工作,但如果我将它拖得更深一些(即在子组内)并放下它,它只会“爬”一级。然后我在另一个阶段有一个阶段: - /
阶段应该只是根元素!我希望你有任何想法。
答案 0 :(得分:1)
David - 您应该能够提供您不希望嵌套在“no-nest”类中的列表项。例如:
<ul id="your-list">
<li id="listItem_1"><div>Item 1</div></li>
<li id="listItem_2" class="no-nest"><div>Item 2 (No-Nesting)</div></li>
<li id="listItem_3"><div>Item 3</div></li>
<li id="listItem_5"><div>Item 5</div></li>
</ul>
我希望有所帮助!
答案 1 :(得分:1)
在文档中有一个错误,而不是 disableNesting 应该 disableNestingClass 。希望有所帮助。