当jqueryUI中的另一个元素覆盖时,防止droppable接受吗?

时间:2012-09-21 09:37:59

标签: jquery-ui jquery-ui-draggable jquery-ui-droppable

我已经放置了2个容器,使容器一个覆盖在另一个容器上。但是,当我将一个项目放到容器1上时,丢弃的项目会进入两个容器。我该如何限制?

   //JS Code: 
   $("div.draggable").draggable({
      helper: "clone",
      cursor: "move",
      containment: 'body'
    });


    $("div.droppable").droppable({
      addClasses: false,
      drop: function (event, ui) {
        var $draggable = $(ui.draggable),
            $droppable = $(this);

        $droppable.html($draggable.clone());
      }
    });

演示:http://jsfiddle.net/HL8VR/

1 个答案:

答案 0 :(得分:0)

谢谢@Nal,但对我没什么用,所以我创造了这个黑客。

一旦项目被放到上面,我会用元素存储一些数据。不幸的是,数据与Droppables一起存储,我无法隔离。

$("div.droppable").droppable({
  addClasses: false,
  drop: function (event, ui) {
    var $draggable = $(ui.draggable),
        $droppable = $(this);

    $droppable.data({'drop': true, 'draggable': $draggable});
  }
});

但是一旦物品掉落,我就可以找出我正在徘徊的掉落物。

$('div.droppable').hover(function() {
    if ($(this).data('drop') === true) {
        $(this).html($($(this).data('draggable')).clone());

        // Clears the data from both droppables to avoid duplicating the item in them
        $('div.droppable').data({'drop': false, 'draggable': false});
    }        
});

演示: http://jsfiddle.net/codef0rmer/AVQVs/