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的文档显示创建回调应该接收“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 回答