В этом jsFiddle У меня возникает одна проблема. Позвольте мне описатьВключить элемент droppable для принятия перетаскиваемых объектов, только когда он пуст
Когда я перетаскиваю любой элемент, содержащий «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'
});
}
Спасибо за тонну. Вы дали решение, поскольку я хочу – Napster
Как я могу установить « » на элемент droppable после того, как его дочерний элемент будет удален? – Napster
@Napster Не можете ли вы поместить '& nbsp' внутри' td' по умолчанию ..? Похоже на проблему «xy». Может быть, это что-то, что можно исправить с помощью css ..? –