1

現在、ドラッグドロップ スクリプトを使用して、(位置: 相対) div(s) の左と上の座標を保存しています。私の問題は、それらが保存される座標が、リロード時に常に同じ位置 (配置されている) とは限らないことです。

div は、指定された高さと幅のコンテナー内にあります (このコンテナーは、div がその内部でのみ移動するように制限します - 境界 div)

そのため、ページ全体ではなく、DIV 内のワーク/スペースのみに座標を取得しようとしています。

私はPHPを使用して、ウィジェットクラス(背景およびその他のcssベースの変数)を提供するそのページの正しいdiv /ウィジェットを取得しています

特定のウィジェットが複数ある場合に備えて、すべてのウィジェットにはカスタム ID があります。

これは私のメインコードです:

<?
    $load = mysql_query("SELECT * FROM `widgets` WHERE `page`='1' AND `show`='yes'")or die(mysql_error());
    while($widget = mysql_fetch_array($load)){
?>
<div id="<? echo $widget['id']; ?>" style="left: <? echo $widget['left']; ?>px; top: <? echo $widget['top']; ?>px;" class="<? echo $widget['widgetid']; ?> draggable ui-widget-content" onmouseup="find('<? echo $widget['id']; ?>','1')"> </div>
<? } ?>

これは保存用の私のJavascriptです:

function find(id, page){
    var position = $("#"+id).position();
    $.ajax({
        type: "POST",
        url: "save.php",
        data: "l=" + position.left + "&t=" + position.top + "&request=" + page + "&w=" +id,
        success: function(msg){
            var element = document.getElementById(id);
            element.style.opacity = "1.0";
        }
    });
}

l が左、t が上、両方とも onmouseup で送信 (w = widgetid、request = pageid)

変数がデータベースに保存されているだけで、ページに正しく配置されていません (右に大きく移動するか、わずかに上に移動します)。

どんな助けでも大歓迎です!

前もって感謝します

4

1 に答える 1

0

のjQueryドキュメントで述べられているように.position()

一致した要素のセット内の最初の要素の現在の座標を、のオフセットを基準にして取得します。

あなたが読み続けるなら、それは言う

これを、 documentに対する現在位置を取得する .offset() と比較してください。

于 2013-02-01T22:34:56.120 に答える