0

我正在使用 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;
    }
  }
},

好的,如果我尝试将阶段放到另一个阶段中,这会很好,但是如果我将它拖得更深一点(即在子组中)并放下它,它只会“爬”上一层。然后我在另一个阶段有一个阶段:-/

阶段应该只是根元素!我希望你有任何想法。

4

2 回答 2

1

大卫 - 您应该能够为您不想嵌套的列表项提供“无嵌套”类。例如:

    <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>

我希望这会有所帮助!

于 2011-12-08T03:41:28.013 回答
1

在文档中有一个错误,而不是disableNesting应该是disableNestingClass。希望有帮助。

于 2013-02-06T08:42:42.903 回答