Например, вы сделали изображение перетаскиваемым как с помощью плагина jQuery, так и с помощью собственного кода. Ваш код меняет background-position
div
, а плагин jQuery меняет фактическую позицию div
. Это должно вызвать некоторые проблемы.
Кроме того, параметр Draggable containment
, похоже, предназначен для перетаскиваемых элементов, размер которых меньше, чем их родительский контейнер, а не для объектов большего размера, как вы пытаетесь сделать.
В любом случае, вот рабочий код:
$(document).ready(function() {
$(".draggable").draggable().bind('dragstop', function(e, ui) {
if (ui.position.top > 0) {
$(this).css('top', 0);
}
if (ui.position.left > 0) {
$(this).css('left', 0);
}
var bottom = -($(this).height() - $(this).parent().height()),
right = -($(this).width() - $(this).parent().width());
if (ui.position.top < bottom) {
$(this).css('top', bottom);
}
if (ui.position.left < right) {
$(this).css('left', right);
}
});
});
Если вам не нужно привязывать края, вы можете избавиться от функции .bind()
и просто вызвать .draggable()
.
$(document).ready(function() {
$(".draggable").draggable();
});