【问题标题】:jquery ui, detect real droppable area on hover off nested droppablejquery ui,在嵌套的droppable悬停时检测真正的droppable区域
【发布时间】:2017-06-11 11:24:09
【问题描述】:

我正在尝试构建一个嵌套droppable 的地方,在drop 事件上我正在附加自定义HTML 对象,它可能是droppable(这里总是droppable),
现在的问题是:


  1. 如何通过当前选项再次为新附加元素调用 droppable?

  2. 我想在上面检测真正的可放置区域,我做对了还是有更好的方法?
    (关于 droppable 是嵌套的)


这里是示例Fiddle

【问题讨论】:

  • 添加元素后,您可以在其上调用 droppable。如果这不是您想要的,请澄清您的问题。

标签: jquery jquery-ui drag-and-drop jquery-ui-draggable jquery-ui-droppable


【解决方案1】:

这是我在 cmets 中提到的一个更好的例子:

http://jsfiddle.net/Twisty/pd3pur85/

JavaScript

$(function() {
  function makeDrop(target) {
    target.droppable({
      greedy: true,
      tolerance: 'touch',
      drop: function(event, ui) {
        ui.helper.detach();
        var newDrop = $("<div>", {
          class: "drop"
        }).appendTo($(event.target));
        $('.drop').removeClass('drag-hover');
        makeDrop(newDrop);
      },
      over: function(event, ui) {
        $('.drop').removeClass('drag-hover');
        $(event.target).addClass('drag-hover');
      },
    });
  }

  makeDrop($(".drop"));

  $('.drag').draggable({
    revert: 'true',
    helper: "clone",
  });
});

然后,您可以在 drop 期间将 Droppable 分配给您动态创建的 &lt;div&gt;

就您的over 而言,我怀疑这是目前最好的用途。

【讨论】:

  • 一切正常,非常感谢;但现在我们面临新的挑战,这可能是一个错误:嵌套 droppable overevent not trigger for parents of Internal droppable accepted drop 执行以下步骤: (1) - 单击并拖动“drag me” " 按钮到内部 Droppable (2) - 释放并放下它 (3) - 注意当前 droppable 的边框颜色在 over 事件 (4) 上发生变化 - 现在!再次单击并拖动按钮到上一个可放置的已接受放置 (5) - 受祖先影响的边框没有变化
  • 这将是一个艰难的过程。考虑over 是如何工作的。可以尝试切换到drag,但是您需要收集所有.drop 元素并检查被拖动的项目是否“超过”或在元素的边界内。我想知道z-index 是否会帮助确定正确的目标。
  • 这很好,但我认为问题是在贪婪的droppable 事件中,在drop 事件中没有触发out 内部可丢弃接受的丢弃,这可能是一个错误,不能通过z 解决-指数。无论如何,谢谢你的提示。
  • @Tarcisiofl 你有问题吗?不确定您正在寻找哪种类型的帮助。
猜你喜欢
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 2013-11-30
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多