Я занимаюсь разработкой небольшого инструмента, и он работает до сих пор, но я мешаю тому факту, что элемент сбрасывания (с параметром 'допуск', установленным на 'fit'), очевидно, не заботится о границе элемента сбрасывания.
См. Здесь: http://jsfiddle.net/scraddy/8geEB/20/
Соответствующий javascript, извлеченный из скрипки:
$("#dropzone").droppable({
hoverClass: "ui-drop-hover",
tolerance: "fit",
drop: function(event, ui) {
$("#dropzone p").hide();
$("#pix img").draggable("disable").hover(function() {
$(this).css({
cursor: "default"
});
});
}
});
$("#pix img").draggable({
cursor: "move",
revert: "invalid",
helper: "clone",
stop: function(event, ui) {
if ($("#dropzone p").is(":hidden")) {
$(ui.helper).clone().appendTo($("#dropzone")).resizable({
handles: 'se',
maxHeight: 200,
minHeight: 25,
aspectRatio: true,
ghost: true,
autoHide: true,
stop: function(event, ui) {
var ximg = ui.position.left + ui.size.width;
var xdrop = $("#dropzone").offset().left + $("#dropzone").width();
var yimg = ui.position.top + ui.size.height;
var ydrop = $("#dropzone").offset().top + $("#dropzone").height();
if (ximg > xdrop || yimg > ydrop) {
$(this).position({
my: "right bottom",
at: "right bottom",
of: "#dropzone",
offset: ((xdrop - ximg) < 0 ? 0 : -(xdrop - ximg)) + " " + ((ydrop - yimg) < 0 ? 0 : -(ydrop - yimg))
});
}
}
}).parent().draggable({
disabled: false,
helper: "original",
containment: "#dropzone",
create: function(event, ui) {
if ($("#testing").size() === 0) {
$("#dropzone div.ui-wrapper").append('<img id="testing" src="http://palmenhandel-witten.de/img/close.png" width="16" height="16" alt="Bild entfernen" />');
$("img#testing").click(function() {
$("#dropzone p").fadeIn(350);
$("#dropzone div.ui-wrapper").resizable('destroy').draggable('destroy');
$(".ui-draggable-dragging").fadeOut(350, function() {
$(this).remove()
});
$("#pix img").draggable("enable").hover(function() {
$(this).css({
cursor: "move"
});
});
});
}
$("#dropzone div.ui-wrapper").bind("mouseenter mouseleave", function(event) {
$("img#testing").toggleClass("over");
});
}
});
}
}
}).hover(function() {
$(this).css({
cursor: "move"
});
});
При перетаскивании изображения в раскрывающееся изображение оно должно быть принято только тогда, когда оно полностью надкапли и ничего не выходят за границу капли.Граница, конечно же, относится к объекту dropable, но я спрашиваю себя, может быть, есть ли обходной путь для этого?
Я думал о ручном изменении положения перетаскиваемого объекта после отбрасывания, но, думаю, это будет громоздким.