我有一个可拖动和可拖放的任务列表。他们都有一个'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