2010-07-06 69 views
1

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

一段时间后,我想我通过取出'axis:y'设置找到解决方案。但其他地方有所改变,我又回到了原点。 – Wytze 2010-07-07 14:19:47

+0

感谢您提供'over'和'out'的提示,我正在寻找像这样的钩子,但官方文档从未提及(不是我发现的)。 – 2011-11-26 15:00:18

回答

1

而且别的什么东西干扰太:拖的时候,助手是身体相当小。我确定在可拖动的开始时将它们设置为一个很好的大小,以便它们很容易被我拖拽它们的可拖拽对象检测到。

1

即使我的“over”事件没有发生 - 特别是当我将对象拖动到另一个靠近被拖动对象的对象时,我发现我的“拖放”甚至总是被触发。与助手的大小玩耍的建议并不适合我,但让我试验其他属性。我惊讶地发现,当我提高了我的scrollSensibility时,我的问题就消失了。也就是说,因为我的可拖动区域非常大(水平方向),所以我设置了滚动:true和scrollSensitivity:160。当我将scrollSensitivity增加到400时,我的问题就消失了。

相关问题