2012-05-24 54 views
3

我有一個div內的圖像。我希望該圖像可以在div內拖動,並且我想存儲圖像的座標。在Draggable上使用「停止」事件對此很有效,並且完全符合我的要求。我也想要在'create'事件上運行相同的代碼。然而,在「創建」事件中使用相同的代碼時似乎是在通過「UI」對象爲空:爲什麼我的UI/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」 object:

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

我試圖訪問ui.offset,由於空對象而無法使用。如果我正確地理解了這一點,那麼'ui'對象應該已經存在於DOM中,因爲我只附加了一個可拖動的對象。在拖動事件的「創建」期間,我不應該訪問ui.offset嗎?

無可否認,我是jQuery的新手,所以我可能會在這裏錯過一些東西。

回答

1

您似乎應該可以在創建時知道可拖動項目的offset。在頁面加載後檢查元素。如果你需要傳遞這些值,你難道不能爲它們創建默認值 - 或者該對象是隨機定位的嗎?其次,(看起來ui元素在創建時應該有很多信息),您應該能夠通過查找該元素並調用.offset()來訪問頁面上任何元素的偏移量它。也就是說,你的create語句中,找到你所要使用,並找出偏移方式無論選擇可拖動的元素:

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

編輯:這裏是一個jsfiddle顯示你如何可以訪問上創建的屬性。

+0

謝謝,我已經採取了你的建議,並直接引用元素,而不是使用'用戶界面'。我無法爲它們創建默認值,因爲包含的元素可能具有不同的大小和位置。 – corywright

+0

@corywright;好消息。很高興這是一個可以接受的解決方法。對不起,我的期望不同於'ui'。很好的問題 – veeTrain

相關問題