jQuery拖放正在复制div
好的,所以我从另一个问题中抓取了这个代码片段,我一辈子都记不清是哪一个,否则我会试图重新提出这个问题。这就是我努力实现的目标: 我有各种各样的div,希望我能够拖动它们并让它们交换位置,所以如果我抓住红方块并进入蓝方块,它们将交换位置(捕捉到它们的位置)。我现在只是想让真正基本的代码正常工作,一旦我做到了,我将在交换样式表以更改内容和外观时实现不同的样式表 当前代码的问题是,当我拖放它时,它将回落到其原始位置,并在其他div之后创建一个重复的div。希望这有意义,以下是jquery:jQuery拖放正在复制div,jquery,html,jquery-ui,web-applications,jquery-ui-draggable,Jquery,Html,Jquery Ui,Web Applications,Jquery Ui Draggable,好的,所以我从另一个问题中抓取了这个代码片段,我一辈子都记不清是哪一个,否则我会试图重新提出这个问题。这就是我努力实现的目标: 我有各种各样的div,希望我能够拖动它们并让它们交换位置,所以如果我抓住红方块并进入蓝方块,它们将交换位置(捕捉到它们的位置)。我现在只是想让真正基本的代码正常工作,一旦我做到了,我将在交换样式表以更改内容和外观时实现不同的样式表 当前代码的问题是,当我拖放它时,它将回落到其原始位置,并在其他div之后创建一个重复的div。希望这有意义,以下是jquery: $(doc
$(document).ready(function () {
src = null;
options = {
revert:true,
/*axis: 'x',*/
opacity: 0.8,
start: function() {
src = $(this).parent();
}
}
$(".item").draggable(options);
$(".container").droppable({
drop: function(event, ui) {
src.append(
$('.item', this).remove().clone()
.removeClass().addClass("item")
.css({"left": '', "opacity": '',"top":''})
.draggable(options)
);
$(this).append(
ui.draggable.remove().clone()
.removeClass().addClass("item")
.css({"left": '', "opacity": '',"top":''})
.draggable(options)
);
}
});
});
return this.pushStack( stack );
标记如下所示:
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
样式在这里应该很重要,但如果是这样的话,我只是将它们设置为100x100px,一个红色,一个蓝色,一个绿色。这里有一个解决这个问题的方法,不使用交换插件,只使用jQuery UI。 小提琴: jQuery用户界面:
$(".item").on("mouseup", function(){
$(this).css("top", "").css("left", "");
});
$(".item").draggable().droppable({
drop: function( event, ui ) {
draged = ui.draggable.css("top", "initial").css("left", "initial");
dropped = $(this);
var elems = draged.parent().children();
if( elems.index(draged) > elems.index(dropped) ) {
temp = draged;
draged = dropped;
dropped = temp;
}
var nElem = draged.next();
dropped.after(draged);
nElem.before(dropped);
}
});
这将完成拖放对象的交换。为什么不使用插件呢?哦,我喜欢这个例子。仍然无法在我的网站上运行,但我相信我的问题是将脚本放错了位置。我第一次做MVC3应用程序,所以我对布局有点粗略。我将纠正这个问题,并在今晚试一试。非常好,非常干净的解决方案。我不记得这是为了什么项目了,但JSFIDLE看起来像是我的目标