我遇到了 Javascript (Jquery + JqueryUI) 的一些问题。我想拖放一个元素。如果它在另一个特定元素之上,则重新创建该元素.. 下面我尝试制作一个简化的示例,以便您了解我的意思..
如何将拖动元素的代码正确移动到 dom 中的新位置?这应该发生在“结束”事件上。不是当我放下它的时候。当我“离开”放置区时,应该恢复之前所做的操作。表示复制回其源的元素,用相同的 id 替换另一个新创建的元素。
谢谢!帕拉
-Edit-:为了更好的可视化,我对代码进行了一些更改。当我删除此行时:
ui.draggable.attr("id", ui.draggable.attr("id") + "_bkp");
“out:”代码进入 out-Part.. 问题是,我必须更改该 id,否则将有 2 个相同的 id。我可以以某种方式告诉 jquery,那仍然是同一个元素吗?
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
<style>
.bigbox{ width: 150px; height: 150px; padding: 0.5em; margin: 10px; border:thin solid black;}
.box{ width: 100px; height: 100px; padding: 0.5em; margin: 10px 10px 10px 0; border:thin solid black;}
</style>
<script>
$(function() {
$("#draggable_1, #draggable-nonvalid").draggable();
$("#droppable").droppable({
over: function(event, ui) {
ui.draggable.attr("id", ui.draggable.attr("id") + "_bkp");
ui.draggable.appendTo($("#muell"));
$('#momo').append('<div id="draggable_1" class="box"><p>I am a new Elemento</p></div>');
},
accept: "#draggable_1",
out: function(event, ui) {
$.each($("#muell > div"), function() {
var idOfBackedupElement = $(this).attr("id");
var origId = $(this).attr("id").replace("_bpk", "");
$("#" + origId).replaceWith($("#" + idOfBackedupElement));
});
}
});
});
</script>
</head>
<div id="momo" style="border:thin solid blue;float:left;">
<div id="draggable_1" class="box" >
<p>
Drag me to my target
</p>
</div>
<div id="droppable" class="bigbox">
<p>
accept: '#draggable'
</p>
</div>
</div>
<div id="muell" style="border:thin solid red;float:left;"></div>
</html>