3

div内に画像があります。その画像を div 内でドラッグできるようにし、画像の座標を保存したいと考えています。Draggable で「停止」イベントを使用すると、これがうまく機能し、まさに私が望むことを行います。また、「作成」イベントで同じコードを実行したいと考えています。ただし、'create' イベントで同じコードを使用すると、渡された 'ui' オブジェクトが空であるように見えます。

$(document).ready(function() {
    $('#imageitem').draggable({
        containment: "parent",
        stop: function(event, ui) {
            console.log(ui);  // results in full object being printed 
        },
        create: function(event, ui) {
            console.log(ui);  // results in empty object being printed: Object { }
        },
    });
});

UI/Draggableのドキュメントは、create コールバックが「ui」オブジェクトを受け取る必要があることを示しています。

$( ".selector" ).draggable({
   create: function(event, ui) { ... }
});

オブジェクトが空のために使用できない ui.offset にアクセスしようとしています。私がこれを正しく理解していれば、'ui' オブジェクトはこの時点ですでに DOM に存在しているはずです。ドラッグ可能なイベントの「作成」中に ui.offset にアクセスできるべきではありませんか?

確かに、私は jQuery を初めて使用するので、ここで何かが欠けている可能性があります。

4

1 に答える 1

1

ドラッグ可能なアイテムがいつ作成されたかを知ることができるはずoffsetです。ページの読み込み後に要素を調べるだけです。値を渡す必要がある場合は、それらのデフォルトを作成できませんでしたか? または、オブジェクトがランダムに配置されるのでしょうか?

第二に、(作成時に要素が多くの情報を持っているように見えるという事実をui避けて)、その要素を見つけて呼び出すことにより、ページ上の任意の要素のオフセットにアクセスできる必要があります.offset()。つまり、create ステートメント内で、使用するセレクターによってドラッグ可能な要素を見つけ、その方法でオフセットを見つけます。

console.log($("#idOfDraggableElement").offset());

編集:これは、作成時にプロパティにアクセスする方法を表示するjsfiddleです。

于 2012-05-24T14:30:58.383 に答える