Я хочу разрешить пользователю перетаскивать элементы пользовательского интерфейса. У меня есть «контейнер» и «контроль», контроль может быть в контейнере, контейнеры могут включать другие контейнеры (это важное требование). Я создал простой прототип, используя jQuery.
HTML:
<div class="one">
<div class="control">Control 1</div>
<div class="control">Control 2</div>
<div class="control container">
Container drag area
<div class="control">Subcontrol 1</div>
<div class="control">Subcontrol 2</div>
<div class="control">Subcontrol 3</div>
<div class="control">Subcontrol 4</div>
<div class="control">Subcontrol 5</div>
<div class="control">Subcontrol 6</div>
<div class="control">Subcontrol 7</div>
<div class="control">Subcontrol 8</div>
<div class="control">Subcontrol 9</div>
</div>
<div class="control">Control 3</div>
Затем я создал сортируемые файлы, используя jQueryUI:
$('.one').sortable({
items: 'div.control',
placeholder: 'placeholder',
forcePlaceholderSize: true
});
Теперь, когда я пытаюсь перетащить «Subcontrol 8» и поместить его между «Subcontrol 2» и «Subcontrol 3», например, я получаю эффект скачка, вы можете наблюдать это здесь:
http://jsbin.com/egipu4/2
Интересно то, что когда я удаляю способность перетаскивать «контейнер», она становится гладкой и идеальной (вы можете увидеть это на примере jsbin ниже примера «прыжок», вы не можете перетаскивать, используя «Область перетаскивания контейнера»). Я пробовал разные "вложенные" плагины и методики, google'd долгое время и единственный, который работал, был на этой странице:
(StackOverflow не позволяет мне публиковать более одного лайка, Google для «Блог Брайана Шварцфагера: демонстрация сортировки вложенных списков» должна быть первой, извините!)
Но он отлично работает только в jQuery1.2 и очень старых jQueryUI. Если я включу последнюю версию jQuery (1.3 / 1.4) и пользовательский интерфейс (1.7 / 1.8), то это тоже пугает. Что я делаю не так?