如何使用jQuery为droppable元素构造正确的accept函数?

时间:2014-11-23 11:33:53

标签: javascript jquery html jquery-ui

我有2个具有绝对定位的可自由拖动的div元素。在这2个div中,我有3个额外的可拖动div s。 (我使用jQuery和jQuery-UI)

  • Div ADiv B可自由拖动,没有直接投放目标 (如Windows操作系统中的Windows)。
  • 绿色框只能在另一个绿色框上拖放。 (待交换)
  • 黄色方框只能在另一个黄色方框上拖放。 (待交换)

我做了与拖放,交换操作相关的所有事情:一切都很好。

问题是,当Div A超过Div B时,我无法阻止在绿框上掉黄框。

我尝试了什么:(但没有工作)

  • 我将parent添加到了可拖动的containment
  • 我为droppable accept尝试了以下功能:

    $(elem).droppable({
        accept: function(draggable){
        if(draggable.parent()!=$(this).parent()){
            return false;
        }
        return true;
    });
    

我想在不分配和比较ID或CLASS名称的情况下解决这个问题。这可能吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

if(draggable.parent()!=$(this).parent())永远不会成立,因为即使它们包含相同的DOM元素,它们也是两个独立的jQuery对象,而且单独的对象彼此之间永远不会==。如果比较父项是非常正确的,你可以比较DOM元素,因为只有一个元素(即使它包含在多个jQuery对象中):

if(draggable.parent()[0] != this.parentNode)