2010-11-02 93 views
2

我有一個節點列表,我可以拖放。需要幫助排序元素

<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_5了對#ITEM_2頂部和 「降」, 我可以返回源(#item_5)和項目越來越下降的(#ITEM2)

如何在目標(#item_2)之前插入放置的項目(#item_5),然後 將項目2之後的每個節點調回一個位置?我需要幫助以執行此任務的方法

例如,

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

(請假設JavaScript框架如jQuery不能使用

的實際代碼: http://jsfiddle.net/danmasq/BkNAF/

回答

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將負責從前一個位置移除元素並調整其他元素。

2

dropNode是放置目標
dragNode被拖動
節點您提到你有兩個可用。

var movebefore = function(dragNode , dropNode) { 

    dropNode.parentNode.insertBefore(dragNode , dropNode); 

}