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.

相關問題