jQuery-UI:即使鼠标在放置区域内,拖放有时也不起作用

Posted

技术标签:

【中文标题】jQuery-UI:即使鼠标在放置区域内,拖放有时也不起作用【英文标题】:jQuery-UI: Drag and Drop sometimes not working eventhough mouse is inside drop area 【发布时间】:2019-12-11 03:55:50 【问题描述】:

我创建了一个列表,可以将其中的项目拖放到另一个列表的项目中。问题有时是当项目被拖动到边缘并放在可放置项目的边缘时,即使鼠标在可放置项目内,也不会发生任何事情。有没有办法改善这一点?

Fiddle example 抓住可拖动项目的右边缘并将其放在可拖放项目的左边缘。即使鼠标明显位于可放置元素内,console.log 也不会注册

jquery

$( ".left li" ).draggable(
    helper: 'clone'
);
$( ".right li" ).droppable(
    accept: '.left li',
    drop: function(ev, ui)
    console.log('dropped inside right li')
  
);

html

<ul class="left">
  <li>drag1</li>
  <li>drag2</li>
  <li>drag3</li>
  <li>drag4</li>
  <li>drag5</li>
</ul>
<ul class="right">
  <li>drop1</li>
  <li>drop2</li>
  <li>drop3</li>
  <li>drop4</li>
  <li>drop5</li>
</ul>

css

.left 
  float:left;


.left li 
  width: 100px;
  height: 30px;
  border: 1px solid black;


.right 
  float:right;


.right li 
  width: 100px;
  height: 30px;
  border: 1px solid black;

【问题讨论】:

【参考方案1】:

我怀疑问题出在你的 droppable 上。您正在使每个列表项成为可放置而不是其父项。

http://jsfiddle.net/Twisty/1ofa25zx/

JavaScript

$(document).ready(function() 
  function log(str) 
    $("#log").prepend("<div>" + str + "</div>");
  
  $(".left li").draggable(
    helper: 'clone'
  );
  $(".right").droppable(
    accept: '.left li',
    drop: function(ev, ui) 
      log('Drop on: ' + $(this).attr("class"));
      var item = $("<li>", 
        class: "dropped"
      ).html(ui.helper.text()).appendTo($(this));
    
  );
);

正如您在此处看到的,drop 会在物品落在ul.right 上时触发。如果需要,还可以调整tolerance。

希望对您有所帮助。

【讨论】:

以上是关于jQuery-UI:即使鼠标在放置区域内,拖放有时也不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JQuery-UI 在 Re-Drag 上拖放和重新拖动克隆

拖放后再次放置元素

更改 HTML5 拖放文件的鼠标光标(GMail 拖放)

为啥我的 Jquery 可拖动对象放置在三个可拖放对象之一上时会跳转?

如何解决拖动事件的性能问题

获取鼠标 - 当前 DOM 元素 obj [while event-resize] jQuery-ui