2013-09-05 2 views
0

У меня есть изображение, которое я перетаскиваю из одной части страницы и опускаюсь в DIV. Нет проблем. Но когда я просто перетаскиваю изображение внутри своего нового дома DIV, я все же запускаю обработчик drop DIV. Есть ли простой способ отключить обработчик drop для элементов, которые уже находятся в droppable?Отключение капли для изображений в пределах droppable

Благодаря

+0

обеспечивают некоторый код, вы пробовали –

+0

я визуализацию требую дополнительного класса, чтобы иметь право на удаление, а затем удаляя этот класс один раз упал. Но код UI должен знать, когда выпавший элемент уже находится в droppable (я удивлен, что обработчик drop даже вызван в этом случае), поэтому я думаю, что должен быть умный способ отключить капли в этом случае. – Steve

ответ

1

Вы можете добавить класс к выпавшему элементу, то в чеке функции капли, если элемент имеет, что и если это так выйти из функции падения.

В моем примере я клонирую элемент в новом при отбрасывании, если вы используете перетаскивание, вы должны изменить выбранный элемент.

Код:

$(document).ready(function() { 

    $(".doodad").draggable({ 
     helper: 'clone', 
     scroll: true 
    }); 

    $(".dropped").draggable({ 
     containment: ".box" 
    }); 
    $(".box").droppable({ 
     accept: ".doodad", 
     activeClass: "ui-state-default", 
     hoverClass: "ui-state-hover", 
     drop: function (e, ui) { 
      if ($(ui.draggable).hasClass('copied')) return 
      alert('dropped'); 
      var droppedItem = $(ui.draggable).clone().addClass('copied').css({ 
       position: "relative", 
       top: $(ui.helper).position().top - $(this).position().top, 
       left: $(ui.helper).position().left - $(this).position().left 
      }).draggable({ 
       containment: ".box" 
      }); 
      $(this).append(droppedItem); 

     } 
    }); 
}); 

Демо: http://jsfiddle.net/IrvinDominin/hLxAd/

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