javascript - 以编程方式将元素拖放到另一个元素上

标签 javascript jquery jquery-ui draggable droppable

使用 jQuery UI,是否可以使用 javascript 执行拖放操作?

Example .单击链接时,将 #pony 拖放到 #box 中。我试过触发拖动事件,但这似乎不起作用:)

$('#pony').trigger('drag', [$('#box')]);

最佳答案

这就是 jQuery UI 团队以编程方式触发 drop 事件的方式。

droppable_events.js :

draggable = $( "#draggable1" ).draggable(),
droppable1 = $( "#droppable1" ).droppable( config ),
droppable2 = $( "#droppable2" ).droppable( config ),

droppableOffset = droppable1.offset(),
draggableOffset = draggable.offset(),
dx = droppableOffset.left - draggableOffset.left,
dy = droppableOffset.top - draggableOffset.top;

draggable.simulate( "drag", {
    dx: dx,
    dy: dy
});

simulate 函数在 jquery.simulate.js 中定义.简单来说,它将 draggable 移动到 droppable 上以触发 drop 事件。

总而言之,我们有以下代码片段。干杯。

$(function() {
  $("#draggable").draggable();
  $("#droppable").droppable({
    drop: function(event, ui) {
      console.log(event, ui);
      alert('dropped!');
    }
  });
});

function trigger_drop() {
  var draggable = $("#draggable").draggable(),
    droppable = $("#droppable").droppable(),

    droppableOffset = droppable.offset(),
    draggableOffset = draggable.offset(),
    dx = droppableOffset.left - draggableOffset.left,
    dy = droppableOffset.top - draggableOffset.top;

  draggable.simulate("drag", {
    dx: dx,
    dy: dy
  });
}
#draggable {
  width: 100px;
  height: 100px;
  padding: 0.5em;
  float: left;
  margin: 10px 10px 10px 0;
}
#droppable {
  width: 150px;
  height: 150px;
  padding: 0.5em;
  float: left;
  margin: 10px;
}
br {
  clear: both;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>

<script src="https://rawgit.com/jquery/jquery-ui/1-11-stable/external/jquery-simulate/jquery.simulate.js"></script>


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

<div id="droppable" class="ui-widget-header">
  <p>Drop here</p>
</div>
<br>
<button onclick="trigger_drop()">trigger drop event</button>

关于javascript - 以编程方式将元素拖放到另一个元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848165/

相关文章:

javascript - Jquery UI 1.12 无法设置未定义的属性 '_renderItem'

javascript - 如何为 jQuery 提示添加宽度属性?

java - Jqueryui - Datepicker - 日期范围偏移

javascript - 单击另一个 select2 下拉列表时如何保持 select2 下拉事件打开

javascript - 无法将 createAnalyser() 和 createGain() 连接到 audioContext()

javascript - 边框颜色不会改变

javascript - div 顶部的文本标签

javascript - 在浏览器中仅禁用某些 js 文件

javascript - 如何在ajax成功 block 中重定向到下一页

javascript - 如何在触发JS函数调用时排除某些类名的元素