需要帮助排序元素

时间:2010-11-02 21:57:58

标签: javascript

我有一个我可以拖放的节点列表。

<ul id="container">
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
<li id="item_3">Item 3</li>
<li id="item_4">Item 4</li>
<li id="item_5">Item 5</li>
<li id="item_6">Item 6</li>
</ul>

我可以在#item_2和“drop”上单击并拖动#item_5, 我可以返回源(#item_5)和项目被删除(#item2)

如何在目标(#item_2)之前插入已删除的项目(#item_5) 在第2项后退一个位置后调整每个节点?我需要一个方法来帮助执行此任务

e.g。

function movebefore(a, b) {...}

(请假设jQuery 之类的javascript框架不能使用)

实际代码: http://jsfiddle.net/danmasq/BkNAF/

2 个答案:

答案 0 :(得分:2)

dropNode是放置目标
dragNode是被拖动的节点
你提到过你们都有。

var movebefore = function( dragNode , dropNode ) {

    dropNode.parentNode.insertBefore( dragNode , dropNode );

}

答案 1 :(得分:1)

function movebefore(a, b) { // If "a" is the node you're dragging and "b" is the node on top of which you dropped "a"
    b.parentNode.insertBefore(a, b); // Or "b.nextSibling", depending on what you want to do
}

就这么简单! DOM将负责从之前的位置移除元素并调整其他元素。