【问题标题】:jquery drag/drop - get the id of the element being dragged from on dropjquery 拖放 - 获取被拖放的元素的 id
【发布时间】:2012-10-10 22:10:48
【问题描述】:

当一个元素被拖放时,有没有办法从被拖动的元素中获取 id(或其他一些属性值)?

例如,在左侧,我有一堆 div,我可以将图像放入其中。在右边我有一个 div 来保存图像。当我将图像从右侧拖动到左侧的 div 时,我可以获取有关 [图像名称] 拖动的内容以及 [div id] 上放置的内容的信息。

如果我现在想将图像从左侧的 div 拖动到右侧的 div,当我将图像放在右侧的 div 上时,如何获取图像所在的 div 的 id。

对不起,如果这令人困惑。

【问题讨论】:

  • 我想是的;你能提供一个JS Fiddle 展示一个SSCCE 演示来重现你正在使用的东西吗?帮助我们更轻松地查看您在做什么,从而为您提供帮助... =)

标签: jquery drag-and-drop


【解决方案1】:

下面是一个可运行的解决方案。

您在左侧有一个带有可拖动元素(这些可能是图像)的容器,在右侧有一个容器,您可以在其中放置这些可拖动元素。在从左到右放置一个元素时,您将看到一个警报,其中显示了被删除元素的 id 以及从中删除项目的容器。

如果您想知道从哪个元素拖动项目,可以通过在放置时访问被拖动元素的父元素来获取它,因为拖动元素只会改变其相对于其容器的位置。

$(function() {
      $( ".draggable" ).draggable();
 
        $( ".droppable, #droppable-inner" ).droppable({
            activeClass: "ui-state-hover",
            hoverClass: "ui-state-active",
            drop: function( event, ui ) {
                alert(ui.draggable.attr('id') + ' was dropped from ' + ui.draggable.parent().attr('id'));
                $( this ).addClass( "ui-state-highlight" );
                
                // Move the dragged element into its new container
                ui.draggable.attr('style','position:relative');
                $(this).append(ui.draggable);
                
                return false;
            }            
        });
  });
.draggable { 
  width: 100px;
  padding: 0.5em;
  margin: 10px;
  border: 1px solid #000;
  background-color: #fff;
}

.droppable {
  width: 230px;
  min-height: 120px;
  padding: 0.5em;
  float: left;
  margin: 10px;
  border: 1px solid #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css" rel="stylesheet"/>
<script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>
<div id="container1" class="droppable">

    <div id="d1" class="draggable" class="ui-widget-content">
        <p>Drag me to my target</p>
    </div>

    <div id="d2" class="draggable" class="ui-widget-content">
        <p>Drag me to my target</p>
    </div>

    <div id="d3" class="draggable" class="ui-widget-content">
        <p>Drag me to my target</p>
    </div>
 
</div>

<div id="container2" class="droppable ui-widget-header">
    <p>Drop here!</p>
</div>
 
<div id="container3" class="droppable ui-widget-header">
    <p>Drop here!</p>
</div>

【讨论】:

  • 我很欣赏这项工作,但这并不是我所需要的。使用您的示例,当 d1 被放到右侧的容器之一上时,警报应该告诉我左侧容器的 id(d1 来自哪里)。
  • 我已将代码更新为您在此处查找的内容:jsfiddle.net/dv3EL/2 另外,我已经编辑了我的答案。
  • 没关系。我有另一个更有意义的解决方案。由于将一个项目从一个容器拖动到另一个容器只会更改拖动项目的位置,因此其父容器保持不变,直到您将其移动到其新容器中,所以在放置时,您可以通过查看其父容器来抓住元素来自的容器ui.draggable.parent()。在此处查看更新的代码:jsfiddle.net/dv3EL/4
猜你喜欢
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2010-11-12
  • 2014-11-30
  • 1970-01-01
  • 2018-09-29
  • 2012-11-06
  • 2013-04-28
相关资源
最近更新 更多