2012-05-16 8 views
11

Mam listę zestawów możliwych do przeciągnięcia/sortowania, do której dynamicznie dodajem elementy, ale problem polega na tym, że po dodaniu elementu nie można ich przenieść do nowych list. Możesz zobaczyć funkcjonalność tutaj: http://jsfiddle.net/Y4T32/2/jQuery UI Przeciąganie/sortowanie - Dynamicznie dodawana pozycja nie przeciągalna

Przeciągnij element z dostępnej listy do jednej z list docelowych, a zobaczysz, że mam na myśli. Teraz dodaj "objaśnienie" i spróbuj przeciągnąć nowy element do jednej z kolumn docelowych.

Znalazłem tu inną odpowiedź, która działa tak, jak chcę, ale nie udało mi się odtworzyć wyników, które otrzymali (i oczywiście nie może teraz znaleźć odpowiedzi). Jakiś wgląd w to, co robię źle tutaj?

+0

znalazłem [ta odpowiedź] (http://stackoverflow.com/questions/2583883/how-to-auto-apply-drag -and-drop-effect-to-dynamically-added-element) i dokonał niewielkiej modyfikacji. Jednak wydaje mi się, że nie jest to najlepszy sposób, aby to osiągnąć. Zaktualizowałem moje skrzypce. http://jsfiddle.net/Y4T32/7/ –

Odpowiedz

18

AKTUALIZACJA ODPOWIEDŹ

Trzeba zadzwonić .draggable() dla każdego elementu, który zostanie dodana. Selektor jQuery, którego używasz w czasie inicjalizacji, dotyczy tylko elementów istniejących w danym momencie, a nie tych, które utworzysz.

Oto niektóre JS, który powinien działać:

var draggable_opts = { 
      connectToSortable: ".sph-callout-portlet", 
      helper: "clone", 
      opacity: 0.75, 
      revert: 'invalid', 
      stop: function(event, ui) { 
       //alert(ui) 
      } 
     }; 

$(function() { 
    $(".sph-callout-portlet").sortable({ 
     opacity: 0.75, 
     placeholder: "ui-state-highlight", 
    }).disableSelection(); 

    $("#sph-callout-portlet-avail li").draggable(draggable_opts); 

    $(document).on("click",'#addNewCo',function(e){ 
     e.preventDefault(); 
     var newCo = $('<li>New Callout</li>').draggable(draggable_opts); 
     $('#sph-callout-portlet-avail').append(newCo); 
    }); 
});​ 

http://jsfiddle.net/SGevw/

+1

To dobry pomysł, aby opublikować swój kod tutaj na wypadek, gdyby jsFiddle był kiedykolwiek niedostępny. Wyjaśnienie tego, co zrobiłeś, to plus. – j08691

+1

@ j08691, gotowe. dzięki za heads up! – ubik

+0

@PedroFerreira, jest to BARDZO blisko tego, czego chcę, z tym wyjątkiem, że nie chcę, aby użytkownicy mogli przeciągać je między kolumnami lub z powrotem do dostępnej kolumny. Dlatego nadałem im różne nazwy klasowe. –

Powiązane problemy