2009-11-11 2 views
6

Ich habe eine Ordnerliste Art der Situation, wo ich Elemente von einem Ordner zum anderen ziehen kann mit jquery ziehbare/dropable. Ordnerelemente sind ziehbar und Ordner können gelöscht werden. Diese sind in einem Div, das klein genug ist, um eine vertikale Bildlaufleiste anzuzeigen.JQuery ziehbar: scroll funktioniert nicht, wenn helper: clone verwendet wird

Ich habe "scroll: true" auf den ziehbaren Elementen gesetzt, so dass sie das div zum Scrollen bringen können. Wenn ich auch "helper:" clone "" auf den ziehbaren Elementen verwende, funktioniert das Scrollen nicht mehr.

Was mache ich falsch?

Hier einige sehr vereinfachte Code:

<div style="background-color: red; width: 500px; height: 100px; overflow: auto;"> 

    <table id="nfTable" class="treeTable"> 
     <tr><td><span class="parent initialized expanded">drop here</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="droppable">drop here</span></td></tr> 
     <tr><td><span class="droppable">drop here</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="draggable">drag me</span></td></tr> 
     <tr><td><span class="droppable">drop here</span></td></tr> 
     <tr><td><span class="droppable">drop here</span></td></tr> 
     <tr><td><span class="droppable">drop here</span></td></tr> 
     <tr><td><span class="droppable">drop here</span></td></tr> 
    </table> 

</div> 
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script> 
// draggable and droppable in here: 
<script type="text/javascript" src="/js/jquery-ui-1.7.2.custom.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $(".draggable").draggable({ 
     // commenting the line below will make scrolling while dragging work 
     helper: "clone", 
     scroll: true, 
     revert: "invalid" 
    }); 

    $(".droppable").droppable({ 
     accept: ".draggable", 
     drop: function(e, ui) { 
      // todo 
     } 
    }); 
}); 
</script> 
+0

haben Sie gesehen ?: http://jqueryui.com/demos/draggable/#option-scroll – Jason

+0

@ Jason, ja. Ich habe diese Demo gesehen. Sie verwenden den "ursprünglichen" (Standard) Helfer, nicht "klonen". –

Antwort

13

Versuchen Sie Ihr Überlauf div mit einem div mit Position Einwickeln: relative; und Hinzufügen von Position: relativ; zu deinem Überlauf div.

<div style="position: relative;"> 
    <div style="position:relative; background-color: red; width: 500px; height: 100px; overflow: auto;"> 
     <table id="nfTable" class="treeTable"> 
      <tr><td><span class="parent initialized expanded">drop here</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="droppable">drop here</span></td></tr> 
      <tr><td><span class="droppable">drop here</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="draggable">drag me</span></td></tr> 
      <tr><td><span class="droppable">drop here</span></td></tr> 
      <tr><td><span class="droppable">drop here</span></td></tr> 
      <tr><td><span class="droppable">drop here</span></td></tr> 
      <tr><td><span class="droppable">drop here</span></td></tr> 
     </table> 
    </div> 
</div> 
+1

Das funktionierte aber nur um Position hinzuzufügen: relativ zu dem einen div. Ich brauchte das umliegende div nicht. –

+1

Ich zweite dies. Das "Container" div brauchte keine Position: Relativ auch in meiner Situation. Vielen Dank! – musashiXXX

+1

Ich dritte dieser ... – Crackerjack