2013-08-23 29 views
7

Próbuję połączyć panel przeciągalny (u góry) i panel sortowalny (u dołu).Interfejs Jquery UI można sortować i przeciągać

Przeciąganie działa dobrze, ale sortowanie kończy się niepowodzeniem.

Oto mój JS skrzypce: http://jsfiddle.net/dmUKY/9/

Zarówno spadek Drag'n i oczyszczenia nasion funkcje dzieli funkcję droppable:drop. Podczas sortowania elementów funkcja musi zastąpić wybrany obiekt.

drop: function (event, ui) { 
    //alert($(this).parent().html()); 
    //alert($(ui.helper).attr('class')); 
    var obj; 
    if ($(ui.helper).hasClass('draggable')) { 
     //alert('draggable'); 
     obj = $(ui.helper).clone(); 
     obj.removeClass('draggable').addClass('editable') 
     //obj.addClass('droppable'); 
     $(this).parent().append(obj); 

    } 


    //alert($(this).parent().html()); 
} 

Jak połączyć te dwie funkcje?

Odpowiedz

4

Zmień swój kod to powinno załatwić sprawę:

obj.removeClass('draggable').addClass('editable').removeAttr('style'); 
//obj.addClass('droppable'); 
$(this).append(obj); 

czek na skrzypcach: http://jsfiddle.net/dmUKY/11/

+0

dzięki! Jak mam postąpić, jeśli istnieją 2 osobne obszary do sortowania? czy mogę wymienić przedmioty między tymi? JSfiddle: http://jsfiddle.net/dmUKY/11/ – dams

+0

zaktualizowany link: http://jsfiddle.net/dmUKY/16/ – dams

+1

wypróbuj ten http://jsfiddle.net/dmUKY/18/ – trrrrrrm

15
$("#sortable").sortable({ 
    revert: true, 
    stop: function(event, ui) { 
     if(!ui.item.data('tag') && !ui.item.data('handle')) { 
      ui.item.data('tag', true); 
      ui.item.fadeTo(400, 0.1); 
     } 
    } 
}); 
$("#draggable").draggable({ 
    connectToSortable: '#sortable', 
    helper: 'clone', 
    revert: 'invalid' 
}); 
$("ul, li").disableSelection(); 

DEMO JSFIDDLE

myślę, że to jest to, czego szukaliśmy! !