我有一個可拖動和可拖放的任務列表。他們都有一個'over'事件處理程序,以確保當另一個任務懸停在它們上方時它們會亮起。當鼠標超過可拖動時,jQuery droppable'over'事件不會觸發
這不是我想要的完全工作。當我開始拖動一個任務時,其他任務不會像預期的那樣點亮,除非當鼠標實際上不在可拖動的助手之上時(這是可能的,因爲我指定了axis ='y',這樣我就可以移動光標幫助者的左側和右側,而不會中斷拖動會話)。
我認爲問題可能是我拖動的任務也是可拖動的,所以我指定一旦它被拖動,它的拖放性必須被禁用。
那麼,爲什麼有一個可拖動的幫助者可觸發的目標不會觸發over事件,而光標通過可觸發的目標觸發該事件?
下面的代碼:
$(mySubtasks).each(function(){
var _this = this;
$(_this).draggable({
axis: 'y',
containment: '#plannerTab',
disabled: true,
revert: 'invalid',
start: function(e, ui){
currentlyDragging = true;
$(_this).droppable('disable');
$('#messageArea').text('Currently dragging');
$(_this).css('position', 'absolute');
},
stop: function(e, ui){
currentlyDragging = false;
returnToSortableTasklist();
$(_this).css('position', 'relative');
}
});
$(_this).droppable({
accept: '.subtask',
disabled: true,
drop: function(e, ui){
setTimeout('currentlyDragging = false;', 1000);
alert('Dropped something legal on a subtask');
//Deactivate all draggable/droppable and reinstate sortable
returnToSortableTasklist();
},
over: function(e, ui){
$(this).addClass('dragdropTargetHover');
$(ui.helper).addClass('dragdropHelperHover');
},
out: function (e, ui){
$(this).removeClass('dragdropTargetHover');
$(ui.helper).removeClass('dragdropHelperHover');
}
});
一段時間後,我想我通過取出'axis:y'設置找到解決方案。但其他地方有所改變,我又回到了原點。 – Wytze 2010-07-07 14:19:47
感謝您提供'over'和'out'的提示,我正在尋找像這樣的鉤子,但官方文檔從未提及(不是我發現的)。 – 2011-11-26 15:00:18