鼠标位置相对于div

Shi*_*ant 8 javascript jquery

我正在使用jquery ui进行拖放.我试图得到相对于div的鼠标位置,这是我的代码:

$( "#db_tables " ).droppable({
  activeClass: "ui-state-default",
  hoverClass: "ui-state-hover",
  drop: function( event, ui ) {
    var x = ui.position.left - ui.offset.left; // tired event.pageX - this.offsetLeft;
    var y = ui.position.top - ui.offset.top; // tired event.pageY - this.offsetTop;
    $( '<div style="margin-top:' + y   + 'px; margin-left:' + x   + 'px; "></div>' ).html( ui.draggable.html() ).appendTo( this );
  }
});
Run Code Online (Sandbox Code Playgroud)

但丢弃div的位置不正确,有人可以告诉我代码有什么问题吗?

feh*_*ays 16

看看这里:

http://docs.jquery.com/Tutorials:Mouse_Position

编辑:上面的jquery文档页面已被破坏.这是一个替代方案:

http://api.jquery.com/event.pageX/

event.pageXevent.pageY应该给你鼠标位置

$("#drag").draggable({
    stop: function(event, ui){
        var x = event.pageX - ui.offset.left;
        var y = event.pageY - ui.offset.top;       
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个示例,显示如何跟踪相对于您拖动的元素的鼠标位置http://jsfiddle.net/87fqr/1/

另一个编辑:

如果您希望鼠标相对于droppable的位置,这应该有效:

$("#db_tables").droppable({
    activeClass: "ui-state-default",
    hoverClass: "ui-state-hover",
    drop: function( event, ui ) {
            var offset = $(this).offset(),
            x = event.pageX - offset.left,
            y = event.pageY - offset.top; 
        $('<div style="margin-top:' + y + 'px; margin-left:' + x + 'px; "></div>' ).html( ui.draggable.html() ).appendTo( this );
    }
});
Run Code Online (Sandbox Code Playgroud)

这里有更完整的例子:http://jsfiddle.net/87fqr/2/