Хорошо, я играю с этим уже несколько часов и до сих пор не играю в кости. Я создаю интерфейс, позволяющий вам перетаскивать значок (div с изображением внутри). Я использую jQuery UI-скрипты , потому что они опробованы и протестированы с функцией перетаскивания div.
Моя проблема в том, что вы не можете перетащить div за пределы родительского div. Чтобы обойти это, я создаю перетаскиваемый div, добавляемый к телу документа, по требованию, когда пользователь запускает событие mousedown. Но я не могу понять, как запустить событие перетаскивания, необходимое, чтобы пользователь мог немедленно начать перетаскивать этот недавно созданный div вокруг.
Короче мне нужно; мыши вниз -> вызвать функцию для создания перетаскиваемого div -> перетащить div вокруг, пока мышь еще не нажата.
Я уверен, что это что-то простое. Любая помощь будет высоко ценится.
Вот пример моей проблемы, все, что нужно для запуска - это скрипты пользовательского интерфейса jQuery, которые можно найти по ссылке выше.
<html>
<head>
<script src="../../jquery-1.6.2.js"></script>
<script src="../../ui/jquery.ui.core.js"></script>
<script src="../../ui/jquery.ui.widget.js"></script>
<script src="../../ui/jquery.ui.mouse.js"></script>
<script src="../../ui/jquery.ui.draggable.js"></script>
<style>
#inactive_dragable { width: 50px; height: 50px; padding: 0.5em; background-color: green; }
.test_drag { width: 50px; height: 50px; padding: 0.5em; background-color: red; position: absolute; }
</style>
<script>
function createDraggableDiv(e){
if (!e) var e = window.event;
jQuery('<div/>', {
id: 'tester',
}).appendTo('#page_wrap');
var isIE = document.all ? true : false;
var _x,_y;
if (!isIE) {
_x = e.pageX;
_y = e.pageY;
}
if (isIE) {
_x = e.clientX + document.body.scrollLeft;
_y = e.clientY + document.body.scrollTop;
}
var boundry = $('#page_wrap').offset();
$('#tester').addClass('test_drag');
$('#tester').html("New div to drag");
$('#tester').css("top", _y + "px");
$('#tester').css("left", _x + "px");
$('#tester').draggable();
// Now how do I make the new div immediately start dragging?
// ...
}
</script>
</head>
<body>
<div id="page_wrap">
<div class="demo" style="width: 300px; height: 200px; background-color: blue; overflow-y: auto; overflow-x: hidden;">
<div onmousedown="createDraggableDiv(event);" id="inactive_dragable" class="ui-widget-content">
<p>Drag me around</p>
</div>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</div>
</div>
</body>
</html>
Когда вы нажимаете на div, я хочу иметь возможность создавать новый div и перетаскивать его вокруг.