Проверьте, содержит ли droppable другой перетаскиваемый элемент (пользовательский интерфейс jQuery)

У меня есть выпадающий элемент div, который исчезает, когда с него перетаскивается перетаскиваемый элемент. Это отлично работает с использованием события out. Проблема, с которой я сталкиваюсь, заключается в том, что в раскрывающемся списке есть два перетаскиваемых элемента. Выпадающий элемент все равно исчезнет, ​​когда я перетащу его. Как я могу проверить, есть ли еще один перетаскиваемый элемент в раскрывающемся списке, чтобы я мог отменить эффект затухания. Я хочу, чтобы выпадающий элемент исчезал только тогда, когда последний перетаскиваемый элемент снимается.

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

             });                
 }
});

person kmb64    schedule 06.01.2012    source источник


Ответы (1)


Являются ли перетаскиваемые элементы дочерними элементами (потомками) отбрасываемых? И снимаются ли они с него, когда их утаскивают? В этом случае вы можете сделать что-то вроде этого:

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

Обновление: если я правильно понял, вы перетащили элемент в 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.
            });
    }
});
person mgibsonbr    schedule 06.01.2012
comment
Нет, они отдельные, иначе я мог бы просто использовать селектор has - person kmb64; 06.01.2012