1

あるコンテナーから別のコンテナーに div をドラッグして、そこに配置しようとしています。それはうまくいきます。問題は、ポジションを保存してリロードしようとするときです。ドラッグ&ドロップ可能な div は #dragdelete div から #tagDropPoint div にドラッグする必要があります

$('.resizeDiv')
    .draggable({ revert: "invalid", snap: "#dragDelete", snapMode: "inner", containment: "#draggableArea" });

$('#tagDropPoint').droppable({accept: '.resizeDiv',
    drop: function(event, ui) {
        setActive(lastXmlTag);
        ui.draggable.resizable();
        }
 });

これは私がポジションを取得する方法です

$('.resizeDiv').mouseup(
    function(){
        var position = $(this).position();
        var dropAreaPos = $('#tagDropPoint').position();

        var xpos = position.left - dropAreaPos.left;
        var ypos = position.top - dropAreaPos.top;

        var width = $(this).width();
        var height = $(this).height();

        var thisId = $(this).attr("id");
        lastXmlTag = thisId;
        updateDDXMLAttr(xpos, ypos, width, height, thisId);

    }
);

ドラッグ用の HTML: タグをここにドラッグします。

        <div class="ddSpacer">&nbsp;</div>

        <div id="dragDelete" class="dragDelete" style="height: {$this->heightListBox}px;">
            <p class="dynConTagHeading">XML-Tags</p>
            <div id="dynConTagsContainer">

            </div>
        </div>
            <p style="clear: both">&nbsp;</div>
        </div>

位置とサイズの値は隠しフィールドに保存され、サイトを更新した後に再読み込みされます。draggableArea div は jquery ダイアログに表示されます。ただし、リロード時の位置は同じではありません。どうすれば修正できますか。

4

3 に答える 3

2

Cookie を使用して位置を保存するか、php や ASP.NET などのサーバー側のページレンダリング手法を使用して、Div が正しい位置にあるページを配信します。

ページ div が元の位置にあることは、正しい HTML の動作です。この動作を「修正」するものは何もありません。これが意図された動作方法です。別の方法で動作させたい場合は、Cookie を使用するか、ページを別の方法でレンダリングします。

于 2012-12-15T10:06:50.283 に答える
0

Javascript(Jquery含む)はブラウザ操作のみです。保存するには、設定を DB またはファイルに保存する必要があります。

于 2012-12-15T10:07:02.280 に答える
0

位置は、パディング、マージン、絶対位置のために移動した可能性があり、コーディング エラーが原因である可能性があります。

同じためにJSFiddleを作成できれば、デバッグと支援が容易になります。

于 2012-12-15T10:20:30.120 に答える