Przeciągalne odwrócenie jeśli poza tym div I wewnątrz innych przeciągów (używając zarówno opcji nieprawidłowego, jak i poprawnego odwrócenia)

On UI draggables ( http://jqueryui.com/demos/droppable/#revert ) czy jest możliwe odwrócenie div, jeśli jest wewnątrz jednego div, a jeśli nie wewnątrz innego? na przykład tak

$( "#draggable" ).draggable({ revert: "valid", revert:"invalid" });
Ale to nie zadziała z oczywistych powodów.. Czy Mogę to przesądzić?.. bo kiedy to jest wewnątrz tego opadającego, a nie wewnątrz tego opadającego?
Author: Logan, 2011-05-20

1 answers

Twoje myślenie było poprawne, musisz zrobić małe pudełka i obsłużyć na nich Zdarzenie drop. Najtrudniejszą częścią jest anulowanie operacji przeciągania.

Domyślnie, Twoje przeciągnięcia powinny zaczynać się od revert:'invalid'. Nie musisz nic robić, jeśli są przeciągane wewnątrz dużego pudełka, które w moim przykładzie używa tolerance:'fit', więc małe pudełka muszą być całkowicie wewnątrz, aby zostać zaakceptowane.

Zrobiłem małe pudełka z tolerance:'touch', więc jeśli dotknie innego małego pudełka, wywoła na nim obsługę drag.

Aby anulować operację przeciągania z funkcji przeciągania, możesz obejść ustawienie przeciąganego elementu na revert:true, co zmusza go do cofnięcia, nawet jeśli został upuszczony na akceptującym upuszczalnym. Aby upewnić się, że możesz przeciągnąć to małe pudełko ponownie, podczas zdarzenia drag stop musisz zresetować revert:'invalid'. Zdarzenie stop zostanie uruchomione przy każdym pomyślnym zrzutie i jeśli zostanie cofnięte, zostanie uruchomione po przywróceniu. zakończone.

Możesz wypróbować demo na żywo tutaj: http://jsfiddle.net/htWV3/1/

HTML:

<div class="drop">
    <div class="drag"></div>
    <div class="drag"></div>
    <div class="drag"></div>
    <div class="drag"></div>
    <div class="drag"></div>
</div>

CSS:

.drop { display:inline-block; width:300px; height:200px; border:1px solid silver; background-color:whitesmoke; padding:10px; }

.drag { display:inline-block; width:30px; height:30px; border:1px solid silver; background-color:white; }

Javascript:

$('.drop').droppable({
    tolerance: 'fit'
});

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

$('.drag').droppable({
    greedy: true,
    tolerance: 'touch',
    drop: function(event,ui){
        ui.draggable.draggable('option','revert',true);
    }
});
 35
Author: DarthJDG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-22 12:29:31