2012-10-30 34 views
5

Potrzebuję tylko 1 bloku w jednym obszarze spadania i przełączam w razie potrzeby. Dlaczego mogę wyłączyć, ale nie mogę włączyć funkcji zrzucania?Dlaczego mogę wyłączyć, ale nie mogę włączyć funkcji zrzucania?

Tu jest mój kodu:

$('.my_block').draggable({ 
    revert: "invalid",   
}); 

$('.free').droppable({   
    accept: ".my_block", 
    drop: function(ev, ui) {    
     $(this).removeClass("free");  
     $(this).addClass("1");     
     ui.draggable.appendTo($(this)).removeAttr('style'); 
      $(this).droppable("disable");    
     }, 
     out: function(ev, ui) {      
      $(this).droppable("enable");  
      $(this).removeClass("1");  
      $(this).addClass("free");    
     },   
    }); 

jsfiddle http://jsfiddle.net/4ABCN/2/

Jak mogę cofnąć wszystkie czerwone bloki do głównych pozycji za pomocą jednego przycisku?

+0

Więc jakie zachowania są dążąc do? Mogę ci pomóc! ':)' –

+0

Potrzebuję wyłączyć droppable, gdy jeden przeciągany (czerwony) element w nim, a jeśli to zostaw (nie ma tam żadnego elementu, przenieś czerwony blok do innego czarnego bloku), potrzebuję go włączyć. Teraz nie mogę wesprzeć mojego czerwonego bloku w pierwszej pozycji zrzucanej, bo to wyłącza :( –

+0

Saweet, patrz post poniżej, mam nadzieję, że pasuje do Twojej potrzeby! ':)' –

Odpowiedz

2

Praca demoUsunięto stare demo

New Demo Spróbuj tego: http://jsfiddle.net/7EbKS/

Zachowanie: Teraz, gdy użytkownik przesuwa czerwone pole jesteś spaść kolejny w pustej pozycji,

Mam nadzieję, że pasuje do przyczyny :)

Kod

$(function() { 
    foo(); 

    $('.my_block').draggable({ 
     revert: "invalid", 
     stop: function() { 
      $(this).draggable('option', 'revert', 'invalid'); 
     } 

    }); 

    function foo() { 
     $('.block').droppable({ 
      greedy: true, 
      accept: ".my_block", 
      // tolerance: "fit", 
      drop: function(ev, ui) { 
       ui.draggable.appendTo($(this)).removeAttr('style'); 
      } 
     }); 
    } 
    $('.my_block').droppable({ 
     greedy: true, 
     tolerance: 'touch', 
     drop: function(event, ui) { 
      ui.draggable.draggable('option', 'revert', true); 
     } 
    }); 

}); 
+0

Dzięki, ale "Potrzebuję tylko 1 blok w jednym obszarze upuszczania", w twoim kodzie może być więcej niż jeden .. Myślę, że to dlatego, że $ (".1 '). droppable (" enable "); problemy z klasami, na klasach działań OUT się nie zmienia :( –

+0

@EugenBorunoff zobacz mój zaktualizowany wpis powyżej ':)' –

+1

Dzięki, moja droga :) –

Powiązane problemy