3

私のアプリケーションには、CSS絶対位置プロパティを持つすべてのdivが含まれています。ドラッグ可能なものは相対的な位置を取るため、margin-left でオーバーライドし、ドラッグされた div の左の値を計算する必要があります。含有が指定されていない場合は正常に機能しますが、

http://jsfiddle.net/W42A4/

<div id="main"><div id="draggable">Drag me</div></div>
$( "#draggable" ).draggable({
    axis:"x",
    containment: "#main",
    stop: function( e, ui ) {
        var el = $(this);
        var newLeft = $(el).css("left");
        var newmarginLeft = $(el).css("marginLeft");
        var totalmarginShift = parseFloat(newLeft) + parseFloat(newmarginLeft);
        el
            .css("marginLeft", totalmarginShift)
            .css("left", "")
            .css("top", "")
            .css("position", "absolute");       
    }
});

箱から出してドラッグ可能な div の動きを制限するために封じ込めが必要ですが、ドラッグ可能な左が機能しません。

フィドル: http://jsfiddle.net/2TpPS/

何が問題なのかわかりません。誰かが私に解決策を提案できますか?

4

1 に答える 1

3

あなたが行っているマージンの不必要なリセットをすべて取り除いてください。あなたのjQueryを簡単に持ってください:

$("#draggable").draggable({
    axis: "x",
    containment: "#main"
});

デモ: http://jsfiddle.net/2TpPS/3/

ボックスを任意の方向にドラッグできるようにする場合は、 を削除しaxis: "x"ます。

于 2013-11-07T12:02:26.240 に答える