2008-10-13 81 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()) 
    } 
}) 
相关问题