J'ai un objet glissable (div), et des objets droppables (table TD's). Je veux que l'utilisateur fasse glisser mon objet déplaçable vers l'un de ces TD superposables.
J'active draggable et droppable de cette façon:
$(".draggable").draggable();
$(".droppable").droppable();
Le problème est qu'avec cela, l'utilisateur peut faire glisser le div n'importe où sur l'écran, y compris hors de la zone de dépôt.
Comment puis-je limiter la zone de délimitation de l'objet déplaçable?
Utilisez l'option "confinement":
API d'interface utilisateur jQuery - Widget déplaçable - confinement
La documentation indique qu’elle accepte uniquement les valeurs: 'parent'
, 'document'
, 'window'
, [x1, y1, x2, y2]
, mais je crois me souvenir qu’elle acceptera également un sélecteur tel que '#container'.
$(function() { $( "#draggable" ).draggable({ containment: "window" }); });
de ce code n’affiche pas . Code complet et démo: http://www.limitsizbilgi.com/div-tasima-surukle-birak-div-drag-and-drop-jquery.html
Afin de limiter l'élément à l'intérieur de son parent:
$( "#draggable" ).draggable({ containment: "window" });
Voici un exemple de code à suivre. #thumbnail est un parent DIV de la #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);
},
});
$(function () {
$( ".droppable-area" ).sortable({
connectWith: ".connected-sortable",
containment: ".droppable-area", //(parent div)
stack: '.connected-sortable div'
}).disableSelection();
});
Voir l’extrait de la documentation officielle pour l’option containment
:
endiguement
Défaut:
false
Contraint le glissement dans les limites du .__ spécifié. élément ou région.
Types multiples supportés:
- Selector: l'élément déplaçable sera contenu dans le cadre du premier élément trouvé par le sélecteur. Si aucun élément n'est trouvé, aucun confinement ne sera défini.
- Element: L'élément déplaçable sera contenu dans le cadre de sélection de cet élément.
- String: valeurs possibles:
"parent"
,"document"
,"window"
.- Array: tableau définissant un cadre de sélection sous la forme
[ x1, y1, x2, y2 ]
.Exemples de code:
Initialisez le glissable avec l'optioncontainment
spécifiée:$( ".selector" ).draggable({ containment: "parent" });
Obtenez ou définissez l'option
containment
, après l'initialisation:// Getter var containment = $( ".selector" ).draggable( "option", "containment" ); // Setter $( ".selector" ).draggable( "option", "containment", "parent" );