【发布时间】:2014-12-22 07:40:48
【问题描述】:
在这个jsFiddle 中,我遇到了一个问题。让我描述一下
当我将任何包含“N”的元素拖到其他 <td> 时,它运行良好。但是在那之后,当我尝试将任何元素拖动到它的原始位置时,它就不起作用了。
我的期望:当任何元素移动到其他地方时,必须允许旧地方接受其他元素。
以下是代码:
$(function () {
$(".dragDiv").draggable({
create: function () {
$(this).data('position', $(this).position())
},
revert: 'invalid',
stop: function () {
$(this).draggable('option', 'revert', 'invalid');
}
});
$('.dragDiv').droppable({
greedy: true,
tolerance: 'touch',
drop: function (event, ui) {
ui.draggable.draggable('option', 'revert', true);
}
});
$(".mainTable tr td").droppable({
drop: function (event, ui) {
console.log(JSON.stringify($(this).attr('id')));
console.log(JSON.stringify(ui.draggable.attr("id")));
snapToMiddle(ui.draggable, $(this));
},
accept: function () {
return $(this).find("*").length == 0;
}
});
});
function snapToMiddle(dragger, target) {
var topMove = target.position().top - dragger.data('position').top + (target.outerHeight(true) - dragger.outerHeight(true)) / 2;
var leftMove = target.position().left - dragger.data('position').left + (target.outerWidth(true) - dragger.outerWidth(true)) / 2;
dragger.animate({
top: topMove,
left: leftMove
}, {
duration: 100,
easing: 'easeOutBack'
});
}
【问题讨论】:
标签: jquery jquery-ui drag-and-drop jquery-ui-draggable jquery-ui-droppable