2008-10-13 50 views
33

我正在使用jQuery庫來實現拖放。jQuery拖放 - 如何獲取元素被拖動

如何獲取正在被拖放的元素?

我想獲得div內圖像的id。以下元素被拖:

<div class="block"> 
    <asp:Image ID="Image9" AlternateText="10/12/2008 - Retina" Width=81 Height=84 ImageUrl="~/uploads/ImageModifier/retina.jpg" runat=server /> 
</div> 

我有標準從他們的榜樣下降功能:

$(".drop").droppable({ 
       accept: ".block", 
       activeClass: 'droppable-active', 
       hoverClass: 'droppable-hover', 
       drop: function(ev, ui) { } 
}); 

我曾嘗試過各種ui.id等,這些似乎並沒有工作。

+1

請注意`ui.draggable`不支持anynore。改用`$(data.helper).attr('ppp')`。 – 2012-09-18 17:46:48

回答

36

它不是ui.draggable嗎?

如果你去這裏(在Firefox和假設你有螢火蟲),並期待在Firebug控制檯你會看到我做ui.draggable對象,它是被拖到

http://jsbin.com/ixizi

股利的console.dir

因此,您在下拉功能需要的代碼是

 drop: function(ev, ui) { 
       //to get the id 
       //ui.draggable.attr('id') or ui.draggable.get(0).id or ui.draggable[0].id 
       console.dir(ui.draggable) 
     } 
+0

謝謝 - 我得到控制檯沒有定義在螢火蟲? – alexmac 2008-10-13 13:12:26

+0

alexmac - 用調試器替換console.dir;聲明,你可以在監視窗口中查看ui.draggable屬性。不知道爲什麼說沒有定義。什麼版本的FB和FF? dir方法是FB的標準,請參閱http://getfirebug.com/console.html – redsquare 2008-10-13 13:15:44

+0

在控制檯之前,您需要 window.loadFirebugConsole(); 讓控制檯工作。 – MDCore 2008-10-13 13:18:20

3

redquare是正確的,裏面你的函數是指ui.draggable

$(".drop").droppable({ accept: ".block", 
         activeClass: 'droppable-active', 
         hoverClass: 'droppable-hover', 
         drop: function(ev, ui) { 
          //do something with ui.draggable here 
         } 
}); 

該屬性指向被拖動的東西。

請注意,如果您使用克隆的「助手」,可拖動的將是克隆副本,而不是原始副本。

13
$(ui.draggable).attr("id")  

...

13

的ui.draggable()似乎並沒有工作了。要獲得ID可以使用

$(event.target).attr("id"); 
2

我得到

drop: function(event, ui) {alert(ui.draggable.attr("productid"));} 
5

我想最上面的,但最終只

event.target.id 

爲我工作。

6

回答這個作品在2017年

大量的時間已經過去了,我發現,目前接受的答案不再起作用。

,目前有效的解決方案:

$('#someDraggableGroup').draggable({ 
       helper: 'clone', 
       start: function(event, ui) { 
        console.log(ui.helper.context) 
        console.log(ui.helper.clone()) 
       } 
      }) 

這裏,ui.helper.context指的是你要拖到原來的對象,並clone()指的是克隆版本。

編輯

以上是太看哪個對象正在使用的draggable()功能拖動。爲了檢測什麼draggable對象是在droppable()下降,以下工作:

$('#myDroppable').droppable({ 
    drop: function(event, ui){ 
     console.log(ui.draggable.context) 
       OR 
     console.log(ui.draggable.clone()) 
    } 
})