2012-10-18 18 views
4

我有兩種可能的使用jQuery拖放的用例。 在一個case降工作,但只有當你仔細瞄準.droppable div的頂部,jQuery droppable容器不總是捕捉放置事件

在它只是永遠不會奏效其他case

我真的不能看到問題在這裏,兩者都應該工作得很好。我也嘗試過使用z-index,但這並不能解決任何問題。

回答

3

所以,這個問題是由我特意偏移的屬性組合導致的:cursorAt,它將幫助器移動到與光標不同的位置,以及設置爲相交的可放置的默認選項「容差」。

當tolerance設置爲Intersect時,它等待可拖動輔助器與可放置容器相交至少50%。而且由於我抵消了我的幫手,它很少重疊正確。

將droppable容差更改爲「pointer」會迫使它只接受指針作爲可拖動目標。

var taskSelected = $("#tablecontainer tr.selected").length; 

$("#tablecontainer tr.selected").draggable({ 
    cursor: "move", 
    cursorAt: { top:-12, left: -20 }, 
    helper: function(event) { 
     return $("<div class='ui-widget-header'>" + taskSelected + " Tasks selected.</div>"); 
    } 
}); 

$(".featureOrgDataWrapper .droppable").droppable({ 
    activeClass: "ui-state-highlight" 
    , tolerance: "pointer" 
    , drop: function (event, ui) { 
     alert("success"); 
    } 
}); 

工作版本:#1#2

0

我不知道我有這個權利,但是......

我添加了一個clearfix類你的第一個例子,它似乎工作:http://jsfiddle.net/kboucher/4wBLG/

而且我相信的理由第二個例子根本不起作用,因爲droppable容器實際上位於藍色方塊旁邊。 (我猜藍色方塊代表可投放區域?)

+0

如果您嘗試在任格多次clearfix不工作,他們的行爲,他們現在做同樣的方式,可放開只能在TE .droppable頂部容器。在第二個例子中,可放置的容器不在藍色旁邊,它們是藍色方塊,它們只是突出顯示並變成藍色。 – LanFeusT

+0

@Lan:如果你在第二個例子中檢查Firebug中的dropzones,你會發現它們在藍色方塊旁邊。 –

+0

右邊的拖放區域是我的屏幕上的邊界,儘管Oo但我明白了。 – LanFeusT