在JQuery-UI中,Draggable Droppable还原不会在droppable上触发“over”事件

时间:2014-09-11 05:09:28

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

在以下代码中:

$(".drag").draggable({
    snap: ".drop",
    snapMode: "inner",
    snapTolerance: 50,
    revert: "invalid",
    start: function(){
        start_moves=moves;
    },
    stop: function(){
        stop_moves=moves;
    }

});

$(".drop").droppable({
    tolerance: "fit",
    drop: function (event, ui) {
        $(this).droppable('option', 'accept', ui.draggable); //accepts only the current draggable
        moves++;
        $("#total_moves").text(moves);
    },
    out: function (event, ui) {
        $(this).droppable('option', 'accept', ".drag"); //accepts all draggables
    }
});

以下是给我提出问题的事件序列:

  1. 将Drag1移动到Drop1(精细)
  2. 将Drag2移至Drop2(罚款)
  3. 尝试将Drag2移动到Drop1(Drag2恢复为Drop2,很好)
  4. 问题是在3)之后,“out”事件被触发,但是当Drag2恢复到Drop2时,“over”事件(我删除了)没有被触发。似乎“over”事件仅在我手动将Drag2拖回Drop2时触发(而不是在自动恢复时)。这是一个问题的原因是因为
  5. 将Drag1移至Drop2现在已成功,因为在“out”事件中的行之后:

    $(this)。droppable('option','accept',“。drag”); //接受所有可拖动的

  6. “over”事件(我删除)不会被触发再次只接受当前的draggable。因此,允许多个可拖动到一个droppable中,这是不需要的行为。

    所以问题是,当一个可拖动的,在被拖出一个droppable后,由于“revert:'invalid'”而自动恢复到同一个droppable,我怎样才能让droppable识别出draggable有重新进入(以便“out”不是唯一触发的事件)? “结束”事件并没有成功。

0 个答案:

没有答案