2

У меня есть droppable div element, который исчезает, когда перетаскиваемый элемент вытаскивается из него. Это отлично работает, используя событие out. Проблема, которую я получаю, - это когда есть два перетаскиваемых элемента на droppable. Элемент droppable по-прежнему будет исчезать, когда я перетаскиваю его. Как я могу проверить, есть ли еще один перетаскиваемый элемент в 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(){ 

Update: если я правильно понимаю, вы вытащили элемент в Droppable (? Возможно, бросил его), а затем тащили еще один, и удалить его. В этом случае вы можете отслеживать, какие (или, по крайней мере, сколько) перетаскиваний прошли через ваш droppable, но не вышли.

$(".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

Нет, они отдельно, иначе я мог бы просто использовать селектор – kmb64

Смежные вопросы