我有一个可拖放的任务列表。它们都有一个“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');
}
});