0
我正在建立一個文件瀏覽器,用戶有能力拖放文件夾來移動它們。每個用戶都有一些允許他們修改文件夾結構的權限。當用戶拖動文件夾移動文件夾,但沒有更改該特定文件夾結構的權限時,會顯示圖標以通知用戶該操作無效。jQuery拖動事件正在以不同的順序發起基於方向
當文件夾被拖動到文件夾樹中時正顯示圖標,但當文件夾被拖動時不會顯示該圖標。
我注意到這是由dropout的順序造成的,而dropover事件是基於拖動方向切換的。拖下來時,首先是丟失,然後是拖延。當拖動訂單時逆轉。這會導致在dropout函數中刪除拖放函數中應用的類。
有沒有一種方法可以確保dropover在啓動前啓動?
這裏是事件處理程序
ko.bindingHandlers.dropTarget = {
init: function (element, valueAccessor, allBindings) {
var $el = $(element);
var eligibilityHandler = allBindings.get("canDrop");
$el.on("dropover", function (event, ui) {
if (!eligibilityHandler(ko.dataFor(element), ko.dataFor(ui.draggable[0]))) {
$el.addClass('invalid-drop-target');
$(ui.helper).addClass('invalid-drag-target');
} else {
$el.addClass('valid-drop-target');
$(ui.helper).addClass('valid-drag-target');
}
});
$el.on("dropout", function (event, ui) {
$el.removeClass('invalid-drop-target');
$(ui.helper).removeClass('invalid-drag-target');
$el.removeClass('valid-drop-target');
$(ui.helper).removeClass('valid-drag-target');
});
}
}