0

我有,最好由这个小提琴,我偶然发现说明了一个问题:jQueryUI的可拖动/可弃得到最高下降DIV

http://jsfiddle.net/JSFU4/3/

这就是,当我draggind一个对象,并悬停在其可弃即使它们之间存在分隔,也会检测到该分隔。我想避免这种情况。

从我所了解的阅读文档中,没有现成的解决方案来做到这一点,但也许一个选项可能是得到'真正的'最上面的div在拖动元素被删除并避免行动,如果它是溢出格。 (但这只是一个想法)。

换句话说,说我有一个投掷的DIV称为可放开-DIV,一个div是在它的上面叫上顶级的非可弃-DIV ...我可以检测到这种在下降功能?

dropped: function(ev, ui){ 
    // somehow detect if the first target to receive the draggable event 
    // is #on-top-non-droppable-div, and don't do anything if it is. 
} 

回答

4

也许这就是适合您的需要:

$(function() { 
    $('.drag').draggable(); 
    $('.drop, .overlay').droppable({ 
     tolerance: 'touch', 
     hoverClass: 'drop-hover', 
     accept: '.drag', 
     drop: function (event, ui) { 
      if ($(this).hasClass('overlay')) { 
       ui.draggable.draggable({ 
        revert: true 
       }); 
      } else { 
       ui.draggable.draggable({ 
        revert: "invalid" 
       }); 
      } 
     } 
    }); 
}); 

DEMO

这里例如设置tolerance: 'pointer',

DEMO

+0

嘿,感谢这一点。我不愿意在叠加层上设置droppables,因为其中有很多...更糟糕的是,有些应该让可拖动的通过。这是一个可行的解决方案,但我认为最重要的方面是减轻重量。 – alemangui

+0

你可以使用'document.elementFromPoint',这是给你的想法:http://jsfiddle.net/JSFU4/10/但是,然后行为可能不完全是你所期待的。无论如何,即使有很多元素,将可插入插件设置为.overlay也不应该成为问题。 –