jQuery - несколько перекрывающихся результатов Droppables в непредсказуемых падениях - PullRequest
3 голосов
/ 05 ноября 2010

У меня есть перетаскиваемый объект, который сбрасывается на изометрическую сетку сбрасываемых предметов.Пропускаемые элементы - это серые плитки, теги img и выглядят как первое прикрепленное изображение.Они устанавливаются так, чтобы выделять синим цветом, когда над ними находится перетаскиваемый объект.

Вот исходный код для сбрасываемого элемента:

        $(".sprite").droppable({
            drop: function(event,ui) {
                object_id = ui.draggable.attr("id").replace("sprite_","");
                set_action('move_object',$(this).attr("id"));
                set_target(object_id);
                ui.draggable.removeClass("holding");
            },
            over: function(event, ui) {
                $(this).attr("src",$(this).attr("src").replace('.png','-hover-blue.png'));
            },
            out: function(event, ui) {
                $(this).attr("src",$(this).attr("src").replace('-hover-blue.png','.png'));
            },
            tolerance: 'pointer'
        });

В принципе, я бы хотел, чтобы a) выделение одной плитки быловремя и б) сделать так, чтобы выделенный тайл был тем, на который упал объект.

Я пробовал все типы допусков безрезультатно.

Изображения:

i.imgur.com / dGx9X.png

и

i.imgur.com / vb1d9.png

1 Ответ

2 голосов
/ 05 ноября 2010

Когда чертовски перемещается над предметом сброса, вы должны деактивировать все остальные предметы сброса и активировать текущий предмет сброса. Тогда просто сделать эффект сбрасывания активным сбросом.

в функции over

$(".sprite").not($(this)).removeClass("over")
   .each(function(){
     $(this).attr("src",$(this).attr("src").replace('-hover-blue.png','.png'));
   });
$(this).addClass("over");

затем по капле замените $ (this) на $ (". Over")

...