2012-02-08 10 views
0

DOM親に対するドラッグ可能なdivの位置を書き留めようとしています。私はグローバルオブジェクトgを持っています。bPosというオブジェクトは、div id ^= 'd'の中にdiv class = 'b'の位置を含むはずです。ドラッグ時のDOM位置の記録

これは私のコードです:

function() { 
     var thisDiv = ""; 
     var thisDivID = ""; 
     $(".b").draggable({ 
      start: function(event, ui) { 
       thisDiv = $(this).closest("div[id^='d']"); 
       thisDivID = thisDiv.attr("id"); 
       console.log(thisDivID); //also returning undefined 

      }, 
      stop: function(event, ui) { 
       var thisX = event.pageX; 
       var thisY = event.pageY; 
       var thisbPos = { 
        id: thisDivID, 
        x: thisX, 
        y: thisY 
       } 
       g.bPos[thisDivID] = thisbPos; 
       console.log(thisDivID);// returning undefined 
      } 
     }); 
} 

コンソールはthisDivIDundefinedであることを示しています。私はそれに任意の値を割り当てる場合でも、それはまだundefinedとして来る。どんな助けも素晴らしいだろう。

答えて

-1

代わりに 'drag:'メソッドを使用してください。 私はこれを使用して、リスト項目を少し抵抗のあるリストの外にドラッグアウトできるようにしました。通常、yグリッドは高い数値に設定されているため、上下左右には移動できません。このコードでは、ユーザーが左または右に移動しようとすると自由に動くようになります。

drag: function (event, ui) 
{ 
    var left = ui.offset.left; //Offset of the list item currently being dragged 

    if (parseInt(left) > 127) 
    { 
     if (!overlay) 
     { 
      overlay = true; 
      $(".li-unreachable").draggable("option", "grid", [1, 1]); //free-moving 
      showOverlay(); 
     } 
    } else 
    { 
     if (overlay) 
     { 
      hideOverlay(); 
      $(".li-unreachable").draggable("option", "grid", [300, 50000]); //y-axis more or less locked down 
      overlay = false; 
     } 
    } 

編集:

がうまくいけば、あなたは私の周りに横たわっていた、このコードからアイデアを得るあなたには、いくつかのより多くのコードが必要な場合は、私に教えてくださいを、私は唯一の関連見えた部分をつかみました。

編集2:「$(this)」を「ui」に変更すると、コードも機能するはずです。

編集3:ここでポイントによりますいくつかのコードです:

$(".b").draggable({ 
    start: function(event, ui) { 
     var x = ui.offset.left; //x coordinate of the object that is being dragged. 
     var y = ui.offset.top; //y coordinate of the object that is being dragged. 
     var elementBeingDragged = ui.item; // ui.helper would work too. 
    }, 
    stop: function(event, ui) { 
     var x = ui.offset.left; //x coordinate of the object that is being dragged. 
     var y = ui.offset.top; //y coordinate of the object that is being dragged. 
     var elementBeingDragged = ui.item; // ui.helper would work too. 
    } 
}); 
+0

IanW @ - 私はXとY座標で位置を保存したかったです。また、 'dragstop'はメモリを解放するので(私はとにかく最終的な位置が必要です)、使いたいと思っていました。私の主な質問は、 'thisDivID'がなぜ定義されていないのですか? – dopatraman

+0

@ IanW - 「ui」ハッシュには位置情報が含まれていますが、アクセス方法はわかりません。ここにアドバイスはありますか? – dopatraman

+0

'var x = ui.offset.left; var y = ui.offset.top; ' $(this)はコンテナを参照します。あなたのマークアップが何であるかはわかりませんが、それはあなたが望むものかもしれません。 – IanW

関連する問題