3
我需要的功能是當您拖動元素並將其放在另一個元素上時,它們會交換位置。JavaScript可拖動我需要引用最初拖動的對象,所以我可以交換
我想寫這樣的交換功能。
function swapElements(obj1, obj2) {
// create marker element and insert it where obj1 is
var temp = document.createElement("div");
obj1.parentNode.insertBefore(temp, obj1);
// move obj1 to right before obj2
obj2.parentNode.insertBefore(obj1, obj2);
// move obj2 to right before where obj1 used to be
temp.parentNode.insertBefore(obj2, temp);
// remove temporary marker node
temp.parentNode.removeChild(temp);
}
因此,作爲參數,我們需要通過inital拖動的元素,然後在drop
通過下降的元素。
var self = this;
// drag start
myNode.addEventListener("dragstart", function(e) {
this.classList.add('dragstart');
e.dataTransfer.setData('from', this.innerHTML);
}, false);
// drop event
myNode.addEventListener("drop", function(e) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
this.classList.remove('dragover');
var obj1 = e.dataTransfer.getData('from');
// user has dropped lets do the swap
self.swapElements(obj1, this);
}, false);
因此,與上述我在做什麼用dataTransfer
但這不是實際引用初始節點,它只是克隆HTML。
所以我的問題是如何引用初始拖動節點,以便我可以運行我的交換功能?
'this.innerHTML'將返回元素的內容作爲字符串,而不是DOM節點。 – sabithpocker
凹凸?對不起,我不明白那個:) – sabithpocker
我不知道如果碰撞在這裏工作,我想也許評論把帖子帶到隊列的頂部。我找到了一個解決方案,我只是將拖動元素附加到窗口。現在正常工作 –