簡體   English   中英

jQuery拖放-在其他容器之前插入拖動的div容器

[英]Jquery Drag and Drop - insert dragged div container before other container

我有一些容器,想通過在容器之前插入拖動的容器來操縱DOM,被拖動的容器正在拖動。

意思是...這是當前位置

默認

現在我想將紅色容器放在綠色容器之前

插入

它會看起來像這樣

期望

重要說明:我知道有Jquery UI,它確實很容易使用,但我可能不使用它。

所以,我知道我可以使用jQuery的功能.insertBefore().insertAfter()但我用拖事件中掙扎。

這是一個顯示我當前工作的小例子

 $(document).ready(function () { // add the events to the containers addDragDropToElement("divRed"); addDragDropToElement("divBlue"); addDragDropToElement("divGreen"); addDragDropToElement("divYellow"); }); function addDragDropToElement(element) { var ele = $("#" + element); ele.prop("draggable", true); // make the div draggable ele.on('dragstart', function () { startDragging(event); }); ele.on('dragenter', function () { enterDragging(event); }); ele.on('dragover', function () { dragOver(event); }); ele.on('dragleave', function () { leaveDragging(event); }); ele.on('drop', function () { dropElement(event); }); ele.on('dragend', function () { stopDragging(event); }); } var draggedElement = null; function startDragging(e) { draggedElement = e.target; } function enterDragging(e) { } function dragOver(e) { e.preventDefault(); } function leaveDragging(e) { } function dropElement(e) { e.preventDefault(); var targetElement = e.target; $(draggedElement).insertBefore(targetElement); } function stopDragging(e) { } 
 #divRed{background:red;} #divBlue{background:blue;} #divGreen{background:green;} #divYellow{background:yellow;} .container{ width: 50px; height: 50px; display: inline-block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="container" id="divRed"></div> <div class="container" id="divBlue"></div> <div class="container" id="divGreen"></div> <div class="container" id="divYellow"></div> 

有人介意幫助我填寫下面的空白事件功能嗎?

所以我終於明白了。 如果有人想知道,它是如何工作的呢?

 $(document).ready(function () { addDragDropToElement("divRed"); addDragDropToElement("divBlue"); addDragDropToElement("divGreen"); addDragDropToElement("divYellow"); }); function addDragDropToElement(element) { var ele = $("#" + element); ele.prop("draggable", true); ele.on('dragstart', function () { startDragging(event); }); ele.on('dragover', function () { dragOver(event); }); ele.on('drop', function () { dropElement(event); }); } var draggedElement = null; // the element that is dragged function startDragging(e) { draggedElement = e.target; // store the dragged element } function dragOver(e) { e.preventDefault(); } function dropElement(e) { e.preventDefault(); var targetElement = e.target; // the element under the dragged element $(draggedElement).insertBefore(targetElement); // place the dragged element before the other element } 
 #divRed{background:red;} #divBlue{background:blue;} #divGreen{background:green;} #divYellow{background:yellow;} .container{ width: 50px; height: 50px; display: inline-block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="container" id="divRed"></div> <div class="container" id="divBlue"></div> <div class="container" id="divGreen"></div> <div class="container" id="divYellow"></div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM