2012-08-05 9 views
5

Mam główny div 150px szerokości i 500px wysokości, z przelewem auto przewijania (lub), który trzyma kilka obrazów, a więc:Weird przesunięcie w jQuery UI Draggable

<div id="images" style="width: 150px; height: 500px; overflow: scroll;"> 
    <img src="images/swift1.jpg" style="width: 150px; height: 150px;" /> 
    <img src="images/swift2.jpg" style="width: 150px; height: 150px;" /> 
    <img src="images/swift3.jpg" style="width: 150px; height: 150px;" /> 
    <img src="images/swift4.jpg" style="width: 150px; height: 150px;" /> 
    <img src="images/swift5.png" style="width: 150px; height: 150px;" /> 
    <img src="images/swift6.JPG" style="width: 150px; height: 150px;" />   
</div> 

I "Zaimplementowałem JQuery UI przeciągalny, aby przeciągnąć obrazy z tego div do innego div i upuść je.

$('#images img').draggable({ 
    revert:true, 
    proxy:'clone', 
    snap: true, 
    onDrag: function(e, ui) { 
     console.log('test'); 
    } 
}); 
$('.drop_image').droppable({ 
    onDragEnter:function(){ 
     $(this).addClass('over');  
    }, 
    onDragLeave:function(){ 
     $(this).removeClass('over'); 
    }, 
    onDrop:function(e,source){ 
     $(this).removeClass('over'); 
     if ($(source).hasClass('assigned')){ 
      $(this).append(source); 
     } else { 
      var c = $(source).clone().addClass('assigned'); 
      $(this).empty().append(c); 
      c.draggable({ 
      revert:true 
      }); 
     $(this).children('img').css('width', '100%').css('height', '100%'); 
     } 
    } 
    }); 

Jednakże, ze względu na przewijania na div, wszystkie obrazy, które znajdują się poniżej dolnej granicy początkowej #images, po przeciągnięciu, są znacznie od kursora myszy przez co offsetowego mieli w oryginalnym div. Wciąż są upuszczane poprawnie, gdy mysz znajduje się nad odbiorczym elementem div, ale przeciągnięty obraz jest wyświetlany w dziwnym miejscu, dopóki nie zostanie upuszczony.

Ktoś wie, jak to poprawić? Zakładam, że muszę coś zrobić w wywoływaniu onDrag, aby ustawić położenie przeciągniętego obiektu na równe z pozycją kursora myszy, ale nie jestem pewien, jaka powinna być składnia.

Odpowiedz

Powiązane problemy