Вот небольшая функция jQuery, которую я только что написал, чтобы вы могли перетаскивать div, используя только jQuery и не используя jQuery UI.
/* PlugTrade.com - jQuery draggit Function */
/* Drag A Div with jQuery */
jQuery.fn.draggit = function (el) {
var thisdiv = this;
var thistarget = $(el);
var relX;
var relY;
var targetw = thistarget.width();
var targeth = thistarget.height();
var docw;
var doch;
thistarget.css('position','absolute');
thisdiv.bind('mousedown', function(e){
var pos = $(el).offset();
var srcX = pos.left;
var srcY = pos.top;
docw = $('body').width();
doch = $('body').height();
relX = e.pageX - srcX;
relY = e.pageY - srcY;
ismousedown = true;
});
$(document).bind('mousemove',function(e){
if(ismousedown)
{
targetw = thistarget.width();
targeth = thistarget.height();
var maxX = docw - targetw - 10;
var maxY = doch - targeth - 10;
var mouseX = e.pageX;
var mouseY = e.pageY;
var diffX = mouseX - relX;
var diffY = mouseY - relY;
// check if we are beyond document bounds ...
if(diffX < 0) diffX = 0;
if(diffY < 0) diffY = 0;
if(diffX > maxX) diffX = maxX;
if(diffY > maxY) diffY = maxY;
$(el).css('top', (diffY)+'px');
$(el).css('left', (diffX)+'px');
}
});
$(window).bind('mouseup', function(e){
ismousedown = false;
});
return this;
} // end jQuery draggit function //
Функция jQuery даже предотвращает выход div из границ. По сути, вы присоединяете его к элементу div, который назначаете активатором перетаскивания (например, в строке заголовка). Вызывать это так просто:
$("#titleBar").draggit("#whatToDrag");
Так что #titleBar будет идентификатором вашего заголовка div, а #whatToDrag будет идентификатором того, что вы хотите перетащить. Я прошу прощения за грязный код, я просто взломал его и подумал, что это даст вам альтернативу пользовательскому интерфейсу jQuery, но при этом сделает его простым в реализации.