jQuery: сортируемый вложенный, но не непрерывный - PullRequest
0 голосов
/ 24 марта 2012

Я разрабатываю страницу локально, поэтому, к сожалению, я не могу показать пример, но у меня есть две сборки "списков" jQuery mobile.

Я хочу, чтобы оба списка можно было сортировать с помощью jqueryПлагин пользовательского интерфейса.

это может выглядеть примерно так:

<div class="sortable"> //1st sortable wrapper
  <div> //list item for 1st sortable wrapper
    <div>
     <div>
       <div class="sortable"> //2nd sortable list wrapper
         <div> //list item for 2nd sortable wrapper

Тогда я звоню

jQuery(".sortable").sortable()

Так что у меня в принципе есть два независимых сортируемых элемента.Один набор сортируемых внутри 1-го набора сортируемых.Каждая группа должна быть независимой от другого набора сортируемых элементов.

Может быть ничего не стоит, если второй набор сортируемых элементов динамически добавляется на страницу.

После добавления я звоню

jQuery(".sortable").sortable('refresh')

Безрезультатно, что второй набор сортируемых элементов, которые добавляются динамически, никогда не сортируется.Когда я пытаюсь перетащить их, вместо них перетаскивается родительский .sortable.

Все плагины, которые я вижу, предполагают, что элементы располагаются один за другим.

Есть мысли по этому поводу?

1 Ответ

0 голосов
/ 24 марта 2012

В версии для разработки файлов jQuery-ui-sortable.

Существует строка, которая объясняет это:

изменение:

if(itemElement != this.currentItem[0] //cannot intersect with itself
            &&  this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
            &&  !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
            && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)
            //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
        )

до:

if(itemElement != this.currentItem[0] //cannot intersect with itself
            &&  this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
            &&  !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
            && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)
            && itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
        )

В основном удалите комментарий в последней строке.

...