1

我遇到了jQuery UI条件问题。jQuery UI - 如何检查可拖动项目是否捕获

下面是代码:

$(function() { 
    $("#draggable2").draggable({ 
     snap: ".ui-widget-header", 
     snapMode: "inner", 
     revert: true 
    }); 
}); 

我的问题:

如何使用if语句所以我可拖动的项目确实恢复,如果它捕捉到我的UI的小部件-header

非常感谢;)

+0

* if * snaps * * when * it snaps。这是两个非常不同的概念。 – rochal 2013-03-11 21:56:42

+0

我有一个数组,所以我想如果我的物品在他的四个边框上折断,它不会恢复:)对不起,我的英语不好:/ – Alkatell 2013-03-11 21:59:33

+0

如果它对齐,两个元素的边缘将在同一平面上。检查一下。 – 2013-03-21 01:42:54

回答

0

jQueryUI的不守“啪”的元素的内部“状态”,但你要努力一点点地得到它。

您将要为stop事件定义一个事件处理程序(当可拖动对象停止拖动时调用该事件处理程序)。

阵列称为snapElements保持在部件里面的数据,它看起来是这样的:

[ 
    { 
     height: 102, 
     item: { /* DOM element */ }, 
     left: 10, 
     snapping: false, 
     top: 10, 
     width: 102 
    }, ... 
] 

你真正寻找这里是snapping财产。捕捉将会告诉你该项目目前是否为“snapping”为可拖动对象。

snapElements阵列每更新一次drag事件,所以它总是处于最新的drag处理程序。从那里,我们只需要使用data()从关联元素中获取draggable小部件实例。

有了这个阵列中的一点,我们可以这样写代码,以确定枯萎它捕捉到目标与否:

$("#draggable2").draggable({ 
    snap: ".ui-widget-header", 
    snapMode: "inner", 
    revert: true 
    stop: function(event, ui) { 
     var draggable = $(this).data("draggable"); 
     $.each(draggable.snapElements, function(index, element) { 
      if (element.snapping) { 
       //i can't quit figure out how to stop the reverting from here, but here's you condition. 
       console.log("Snapped !!"); 
      } 
     }); 
    }, 
}); 

哦,我发现这个在线希望这是有帮助的。 Revert Function callback.

相关问题