jQuery nestedSortable: предотвращение вложенности элементов - PullRequest
0 голосов
/ 26 октября 2011

Я использую плагин 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;
    }
  }
},

Хорошо, это работает нормально, если я пытаюсь сбросить фазу внутри другой фазы, но если я перетащу его немного глубже (то есть в подгруппу) и уроню, он будет «подниматься» только на один уровень вверх.тогда у меня одна фаза в другой: - /

Фазы должны быть только корневыми элементами!Надеюсь, у тебя есть идеи.

Ответы [ 2 ]

1 голос
/ 06 февраля 2013

В документации есть ошибка, вместо disableNesting должно быть disableNestingClass . Надеюсь, это поможет.

1 голос
/ 08 декабря 2011

Дэвид - Вы должны быть в состоянии дать элементу списка, который вы не хотите, чтобы он был вложенным, класс "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>

Надеюсь, это поможет!

...