jQuery UI Sortable - запрещение переноса в дочерние элементы - PullRequest
3 голосов
/ 07 мая 2009

Я работаю с сортируемыми файлами пользовательского интерфейса jQuery и создал систему div в этом формате;

<div class='mainDiv'>
    <label>text: <input type='text' name='textbox' /></label>

    <div class='children'>
        <div class='mainDiv'>...</div>
        <div class='mainDiv'>...</div>
        <div class='mainDiv'>
            <label>text: <input type='text' name='textbox' /></label>
            <div class='children'>...</div>
        </div>
    </div>
</div>

У divов может быть бесконечное количество дочерних элементов, и я хочу иметь возможность перетаскивать все .mainDiv в пределах родительского поля, поэтому я использовал это:

$(".mainDiv").parent().sortable({items: ".mainDiv", containment: "parent"});

Однако это позволяет перетаскивать элементы в дочерние или дочерние элементы .children. чего я не хочу, чтобы случилось. Я хочу ограничить элементы, чтобы они оставались в пределах своего родителя.

Любая помощь здесь будет горячей.

Приветствия

1 Ответ

4 голосов
/ 24 ноября 2009

Мне удалось решить это так:

$(this).parent().sortable({
    items: '> li',
    axis: 'y',
    ...
});

В вашем случае он должен работать с:

items: '> .mainDiv'

сдерживание: "родитель" не требуется.

В моем случае я включаю «сортировку» во время предыдущего события щелчка, так как это происходит быстрее. Я думаю, что проще, если вы связываете это с событием "mousedown". Если вы создаете дерево динамически (например, Ajax), я рекомендую вам использовать «livequery».

...