jquery draggable: jak ograniczyć obszar draggable?

Mam obiekt przeciągalny (div) I kilka upuszczalnych (table TD). Chcę, aby użytkownik przeciągnął mój obiekt przeciągalny do jednego z tych droppable TD.

Włączam przeciąganie i upuszczanie w ten sposób:

$(".draggable").draggable();
$(".droppable").droppable();

Problem polega na tym, że dzięki temu użytkownik może przeciągnąć div w dowolne miejsce na ekranie, w tym poza obszar, który można upuszczać.

Jak mogę ograniczyć obszar graniczny dla przeciąganego obiektu?

Author: Brandon, 2010-07-13

5 answers

Użyj opcji "przechowalnia":

JQuery UI API-Draggable Widget-containment

Dokumentacja mówi, że akceptuje tylko wartości: 'parent', 'document', 'window', [x1, y1, x2, y2] ale wydaje mi się, że będzie akceptować selektor, taki jak '#container' zbyt.

 88
Author: Mattyod,
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
2018-03-06 13:12:47
$(function() { $( "#draggable" ).draggable({ containment: "window" }); });

Tego kodu nie wyświetla. Pełny kod i Demo: http://www.limitsizbilgi.com/div-tasima-surukle-birak-div-drag-and-drop-jquery.html

W celu ograniczenia elementu wewnątrz jego rodzica:

$( "#draggable" ).draggable({ containment: "window" });
 13
Author: Limitless isa,
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
2017-04-03 13:13:33

Oto przykład kodu do naśladowania. # thumbnail jest rodzicem DIV dla # handle DIV

buildDraggable = function() {
    $( "#handle" ).draggable({
    containment: '#thumbnail',
    drag: function(event) {
        var top = $(this).position().top;
        var left = $(this).position().left;

        ICZoom.panImage(top, left);
    },
});
 9
Author: mbokil,
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
2012-10-29 20:53:14

Zobacz fragment oficjalnej dokumentacji dla containment opcja :

Zabezpieczenie

Default: false

Ograniczenia element lub region.
obsługa wielu typów:

  • Selektor: przeciągalny element zostanie umieszczony w obwiedni pierwszego elementu znalezionego przez selektor. Jeśli żaden element nie zostanie znaleziony, żadne zabezpieczenie nie zostanie gotowi.
  • Element: przeciągalny element będzie zawarty w obwiedni tego elementu.
  • String : Możliwe wartości: "parent", "document", "window".
  • Array : tablica definiująca obwiednię w postaci [ x1, y1, x2, y2 ].

Przykłady kodu:
Zainicjalizuj przeciąganie za pomocą opcji containment podanej:

$( ".selector" ).draggable({
    containment: "parent" 
}); 

Get or set the containment option, after initialization:

// Getter
var containment = $( ".selector" ).draggable( "option", "containment" );
// Setter
$( ".selector" ).draggable( "option", "containment", "parent" );
 0
Author: naXa,
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
2018-03-06 13:24:03
$(function () {
    $( ".droppable-area" ).sortable({
                connectWith: ".connected-sortable",
                containment: ".droppable-area", //(parent div)
                stack: '.connected-sortable div'
            }).disableSelection();
});
 0
Author: Rahul Ratnam,
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
2018-07-05 17:53:05