У меня есть список задач, которые можно перетаскивать. У всех них есть обработчик событий «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');
}
});