2012-07-02 15 views
8

muszę poniższe funkcjejQuery UI wielu wybierz przeciągnij

  1. wybranie pozycji z listy poprzez przeciągnięcie myszką i cntrl klucz podobny do selectables jQuery UI.
  2. Wiele elementów powinno być przeciągalnych naraz.

Potrzebuję aplikacji podobnej do funkcji przeciągania i upuszczania systemu operacyjnego.

Mój problem polega na tym, że chciałbym wybrać wiele pozycji, które przeciąga element wskaźnika myszy, jak go rozwiązać.

Próbowałem użyć kodu, ale ma on kilka wad przy wyborze wielu elementów.

$(document).ready(function(){ 

    var selectedClass = 'ui-state-highlight', 
     clickDelay = 600,  // click time (milliseconds) 
     lastClick, diffClick; // timestamps 

    $("#draggable li") 
     // Script to deferentiate a click from a mousedown for drag event 
     .bind('mousedown mouseup', function(e){ 
      if (e.type=="mousedown") { 
       lastClick = e.timeStamp; // get mousedown time 
      } else { 
       diffClick = e.timeStamp - lastClick; 
       if (diffClick < clickDelay) { 
        // add selected class to group draggable objects 
        $(this).toggleClass(selectedClass); 
       } 
      } 
     }) 
     .draggable({ 
      revertDuration: 10, // grouped items animate separately, so leave this number low 
      containment: '.demo', 
      start: function(e, ui) { 
       ui.helper.addClass(selectedClass); 
      }, 
      stop: function(e, ui) { 
       // reset group positions 
       $('.' + selectedClass).css({ top:0, left:0 }); 
      }, 
      drag: function(e, ui) { 
       // set selected group position to main dragged object 
       // this works because the position is relative to the starting position 
       $('.' + selectedClass).css({ 
        top : ui.position.top, 
        left: ui.position.left 
       }); 
      } 
     }); 

    $("#droppable, #draggable") 
     .sortable() 
     .droppable({ 
      drop: function(e, ui) { 
       $('.' + selectedClass) 
       .appendTo($(this)) 
       .add(ui.draggable) // ui.draggable is appended by the script, so add it after 
       .removeClass(selectedClass) 
       .css({ top:0, left:0 }); 
      } 
     }); 

}); 
+0

Proszę o pomoc –

Odpowiedz

2

Oto demo multiselect przeciągnij

Demo

Wystarczy użyć wtyczki selekcyjny Aby wybrać wiele elementów:

$(".itemlist").selectable({filter:"li"}); 
+3

Funkcja przeciągania w tym przykładzie nie działa w kontekście "przeciągnij i upuść". ** Przeciągnij ** powinien ułatwić przesuwanie elementów, nie wybierając pozycji. – Astrotim

+0

Tak, to nie jest odpowiedź ... – cmcculloh

+1

To zaczyna się zbliżać do odpowiedzi: http://jsfiddle.net/cmcculloh/8M6qt/ – cmcculloh

0

Użyj przykładowy kod wyboru rusztu i dodać funkcjonalność Draggable + Sortable jak pokazano w poniższym przykładzie: http://jqueryui.com/demos/draggable/#sortable

+0

Dziękuję za uwagę, ale potrzebuję wielokrotnego wyboru przeciągania i upuszczania. –

+0

Zaktualizuj swoje pytanie za pomocą kodu i gry demo, abyśmy mogli Ci pomóc w rozwiązaniu problemu. Linki – Alp

+0

zostały dołączone do pytania –