Положение мыши относительно div

Я использую 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 );
  }
});

Но позиция сброшенного div неверна. Кто-нибудь может сказать, что не так с кодом?

Ответы на вопрос(1)

Решение Вопроса

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

РЕДАКТИРОВАТЬ: страница документации JQuery выше не работает. Вот альтернатива:

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

event.pageX а такжеevent.pageY должен дать вам положение мыши

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

РЕДАКТИРОВАТЬ: вот пример, показывающий, как отследить положение мыши относительно перетаскиваемого элементаhttp://jsfiddle.net/87fqr/1/

ДРУГОЕ РЕДАКТИРОВАНИЕ:

Это должно работать, если вы хотите, чтобы положение мыши было относительно сбрасываемого:

$("#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 );
    }
});

Более полный пример здесь:http://jsfiddle.net/87fqr/2/

 Shishant29 сент. 2010 г., 20:36
относительно упал в
 fehays29 сент. 2010 г., 20:35
Извините, я думаю, что неправильно понял. Вы хотели положение относительно элемента, который вы перетаскиваете, или относительно элемента, в который вы перетащили?
 Shishant29 сент. 2010 г., 20:08
Но как сделать положение относительно div, в который я бросаю?
 Fallenreaper28 мая 2014 г., 14:26
мертвые ссылки для jquery
 Shishant29 сент. 2010 г., 20:40
Спасибо Большое. Есть ли лучший способ написать?'<div style="margin-top:' + y + 'px; margin-left:' + x + 'px; "></div>'
 fehays29 сент. 2010 г., 20:44
Я полагаю, это личное предпочтение. Вы можете использовать объект jquery $ ("<div />"). Css ({marginLeft: x, marginTop: y});
 fehays29 сент. 2010 г., 20:11
Вы можете отслеживать положение в событии остановки вашего перетаскиваемогоjqueryui.com/demos/draggable/#event-stop  вам просто нужно вычесть смещение элемента из позиции мыши

Ваш ответ на вопрос