2013-01-10 44 views
0

我试图在dragstart事件触发时重新定位项目。在jquery中触发事件dragstart时重定位元素

该项目在被拖动之前应该从鼠标在屏幕上的当前位置重新定位。

重新部署在dragstart之前触发的mousedown事件对我所寻找的内容没有用处。

我想通过这种方式:提前

var xMouse = 0; 
var yMouse = 0; 

$(document).mousemove(function(e){ 
    xMouse = e.pageX; 
    yMouse = e.pageY; 
}); 

$("#obj").draggable({ 
    revert: false, 
    start: function() { 
     $("#obj").css("left", xMouse+"px"); 
     $("#obj").css("top", yMouse+"px");  
    } 
}); 

$("#obj") 
.bind('dragstart',function(event){ 
    $("#obj").css("left", xMouse+"px"); 
    $("#obj").css("top", yMouse+"px");      
}) 
.bind('drag',function(event){ 

}) 

感谢。

回答

1

问题是,jQuery UI的“拖动”使用绝对定位来移动节点,因此您在拖动开始时的手动定位被完全覆盖。这就是说,你可以使用cursorAtoption定位鼠标光标在拖动节点:

$("#obj").draggable({ 
    revert: false, 
    cursorAt: { left: 0, top: 0 } 
}); 

下面是它jsFiddle

+0

辉煌。这就是我正在寻找的。谢谢!! – karse23

+0

当然,这是我们在这里做的。 ;) – jakerella

相关问题