2

我有一個droppable div元素,當拖動可拖動元素時淡出。這可以很好地使用out事件。我得到的問題是在droppable上有兩個可拖動的元素。當我拖拽一個元素時,可拖拽元素仍然會褪色。我如何檢查droppable上是否已經有另一個可拖動的元素,以便我可以取消淡入淡出效果。我希望可丟棄元素只在最後一個可拖動元素被取消時纔會淡入淡出。檢查droppable是否已經包含另一個可拖動的元素(jQuery UI)

$(".droppable-element").droppable({ 
    tolerance: 'touch', 
    out:function(event,ui){ 

     /*Need to first check if there is another draggable element in the droppable before fading out.*/ 
      $(this).fadeOut('slow', function(){ 
       // Animation complete. 

      });     
} 
}); 

回答

2

是可拖動元素子元素(後代)的可拖動元素嗎?當它們被拖走時,它們是否會從它移除?在這種情況下,你可以做這樣的事情:

if ($(this).find(".draggable-element").length == 0) 
    $(this).fadeOut('slow', function(){ 

更新:如果我理解正確的話,你拖到可投放的元素(?也許放棄了它),然後拖到另一個,並刪除它。在這種情況下,你可以跟蹤哪些(或者至少有多少)可拖動的可拖動但沒有出去。

$(".droppable-element").droppable({ 
    tolerance: 'touch', 
    over:function(event,ui) { 
     var howMany = $(this).data("howMany") || 0; 
     $(this).data("howMany", howMany+1); 
    }, 
    out:function(event,ui){ 
     var howMany = $(this).data("howMany") || 1; 
     $(this).data("howMany", howMany-1); 
     if (howMany == 1) 
      $(this).fadeOut('slow', function(){ 
       // Animation complete. 
      }); 
    } 
}); 
+0

不,他們是分開的,否則我可以只使用has選擇器 – kmb64 2012-01-06 02:58:25

相關問題