我找到了一種方法來實現這一點。儘管jQuery UI draggables/droppables API沒有選項,但我通過添加唯一的「id」屬性來跟蹤可拖動和可拖放的屬性,以便跟蹤它們。
這裏是我走近如下:
此舉可拖動到可投放
我的方法:找到目標可投放的座標,並更新了可拖動的CSS 。
要弄清楚哪些牽引被拖和滴管收到了,我添加的屬性dragger-id
和dropper-id
,所以我可以drop事件中識別他們:
drop: function(event, ui){
// Get the current dragger and dropper ID's
dropperId = $(this).attr('dropper-id');
draggerId = ui.draggable.attr('dragger-id');
// ... more code
}
然後我計算的頂部和左側座標拖動器基於droppable的值。爲此,我使用了jQuery的offset()
方法。
drop_x = $('.droppable').offset().left - $('.draggable').offset().left;
drop_y = $('.droppable').offset().top - $('.draggable').offset().top;
注意:由於draggables相對於它們的起始位置,我必須進行差異計算。
最後,我設置了top
和left
CSS值:
ui.draggable.css('top', drop_y+'px'); // y-axis
ui.draggable.css('left', drop_x+'px'); // x-axis
知道是否可投放已經擁有了可拖動,並且能夠識別可拖動
爲此,我在droppable元素上創建了另一個屬性來跟蹤dragger-id
值。我叫它current-dragger
,這樣它就會是唯一的,我可以通過它進行查詢。我用-1
作爲我的默認值,意思是「沒有拖拉機」。
我在滴法分配current-dragger
還有:
drop: function(event, ui){
// Get the current dragger and dropper ID's
dropperId = $(this).attr('dropper-id');
draggerId = ui.draggable.attr('dragger-id');
// Remove current-dragger value from old dropper (-1 means no dragger)
$('[current-dragger="' + draggerId + '"]').attr('current-dragger', '-1');
// Update current-dragger on this dropper
$(this).attr('current-dragger', draggerId);
// ... more code
}
我想真的沒有必要做更新到DOM屬性,所以在督促我將全程跟蹤一個JavaScript映射內部的電流牽引目的。
對於一個完整的工作示例,see my updated plunk
好吧,我是對的,那麼這涉及一起使用和添加數據屬性跟蹤誰在這裏可放開的下跌事件的組合接線的事情。工作時會提供答案 –