1

当可拖放对象出现在可放置区域时,我们如何获取可拖动对象的拖动事件?实际上,droppable 的 over 事件并没有捕捉到拖动对象的拖动事件。任何人都可以为此建议我。谢谢

$("#draggable").draggable({
    revert: true,
    drag: function (event, ui) {
       //console.log(ui.offset); ---------> Works fine
    },
    stop: function (event, ui) {}
});

$("#droppable").droppable({
    activeClass: "drop-active",
    hoverClass: "drop-hover",
    accept: "#draggable",
    tolerance: "fit",
    drop: function (event, ui) {

        $("<div></div>").text(ui.draggable.text()).appendTo(this);

    },
    out: function (event, ui) {
        console.log('out');
    },
    over: function (event, ui) {
        var dragItem = ui.draggable;
        var dragOffset = ui.offset;
        //console.log(dragOffset);  ---------> not getting drag events param

    },

});
4

1 回答 1

0

更新

好的,我明白了。您真的无法获得实际的偏移量,over因为它仅在您的拖动对象进入可放置对象时触发。它只发生一次。我们需要一个解决方法。这是我的解决方案:

var x = 0;
var y = 0;

$("#draggable").draggable({
    revert: true,
    drag: function (event, ui) {
      //here it works fine 
      //console.log(ui.offset);
      x = ui.offset.left;
      y = ui.offset.top;
      console.log(x + " " + y);
    }
});

在你的over事件中:

over: function (event, ui) {
        var dragOffsetx = x;
        var dragOffsety = y;
    }

我创建了一个全局变量 [x and y] 并在drag. 但是您仍然可以获得overevent 的值,因为它是全局声明的。

于 2013-06-06T10:46:16.827 回答