目前我有3个可拖动的项目设置了3个ID和类.word。
我成功地将它们放到了原位,并且在拖出掉区后也恢复到初始位置。
我的主要目标是让dropggables掉入dropzone时进行交换。
所以例如:#word1在dropzone中,当#word2被拖动到dropzone时,#word1应该返回到初始位置,#word2应该捕捉到dropzone,依此类推。
我尝试了各种各样的东西,但无法正确理解逻辑。谢谢社区。 p>
编辑:
@bipen对不起,到目前为止代码如下:
HTML
<div id="line"></div>
<img src="resources/word1_correct.png" id="word1" class="word" />
<img src="resources/word2.png" id="word2" class="word" />
<img src="resources/word3.png" id="word3" class="word" />
JS
// JavaScript Document
$(document).ready(function() {
var p = $("#word1");
var offset = p.offset();
var p2 = $("#word2");
var offset2 = p2.offset();
var p3 = $("#word3");
var offset3 = p3.offset();
$(".word").draggable({
containment: "parent",
revert: 'invalid',
revertDuration: 0,
start: function(event, ui) {
// Log start dragged position to element data
}
// end .word draggable
});
$("#line").droppable({
accept: '.word',
tolerance: "touch",
drop: function(event, ui) {
$(ui.draggable).css('top',$(this).position().top);
$(ui.draggable).css('left',$(this).position().left);
$(ui.draggable).attr('class', 'dropped');
},
out: function(event, ui) {
$(this).droppable('option', 'accept', '.word');
$('#word1').draggable('destroy');
$('#word1').offset({ top: offset.top, left: offset.left});
$('#word1').draggable({
revert: 'invalid',
revertDuration: 0,
});
$('#word2').draggable('destroy');
$('#word2').offset({ top: offset2.top, left: offset2.left})
$('#word2').draggable({
revert: 'invalid',
revertDuration: 0,
});
$('#word3').draggable('destroy');
$('#word3').offset({ top: offset3.top, left: offset3.left})
$('#word3').draggable({
revert: 'invalid',
revertDuration: 0,
});
}
// end #line droppable
});
//end document ready
});
答案 0 :(得分:0)
试试这个
$( "#dropzone" ).droppable({
drop: function( event, ui ) {
$( this ).html(); //empty the dropzone
ui.appendTo( this ); //add the dragged word to it
}
答案 1 :(得分:0)
你只需移动位置可拖动:
示例是我有两个droppable(droppable1,droppable2)和两个draggable(draggable,draggable2)
在document.ready我移动位置draggable1&amp; draggable2到droppable1,检查以下代码:
var d1left = $("#droppable1").position().left + 20;
var d1top = $("#droppable1").position().top + 25;
$("#draggable1").css({'position': 'absolute', 'left': (d1left*1) + 'px', 'top': ((d1top*1)+15) + 'px'});
$("#draggable2").css({'position': 'absolute', 'left': (d1left*1) + 'px', 'top': ((d1top*2)+20) + 'px'});
也许这可以帮助你,tq