0

dragstart イベントが発生したときにアイテムの位置を変更しようとしています。

アイテムは、ドラッグする前に、画面上のマウスの現在の位置から再配置する必要があります。

ドラッグスタートの直前に発生するマウスダウンイベントを再配置するオプションは、私が探しているものには役に立ちません。

私はこの方法で試しています:

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){

})

前もって感謝します。

4

1 に答える 1

1

問題は、jQuery UI の「ドラッグ」が絶対配置を使用してノードを移動するため、ドラッグ開始時の手動配置が完全に上書きされることです。つまり、cursorAt オプションを使用して、ドラッグしたノードにマウス カーソルを配置できます。

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

これがjsFiddleです。

于 2013-01-10T15:23:39.307 に答える