2010-07-06 63 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時,我的問題就消失了。

相關問題