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

标签 javascript jquery jquery-ui jquery-ui-draggable jquery-ui-droppable

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

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;
}

最佳答案

我怀疑问题出在你的 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));
    }
  });
});

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

关于javascript - jQuery-UI:即使鼠标位于放置区域内,拖放有时也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327871/

相关文章:

javascript - 多次调用函数并保存结果

javascript - 如何仅向 vuejs 中的单击按钮添加加载?

javascript - 焦点输入 : insert value and move cursor to end

jquery - CSS3 动画可以工作,但使用 jQuery 却没有成功

javascript - 使用输入掩码获取日期时间?

javascript - 在这个 2 个空数组的松散相等比较中发生了什么

javascript - 如何在一个 onClick/onPress 方法上传递 2 个 props?

javascript - jQuery 自定义事件数据(订阅和触发)

javascript - jQuery AutoComplete 在第一次使用后显示在元素后面

javascript - JQuery:对话框不会触发自动完成