jquery draggable: ¿cómo limitar el área arrastrable?
Tengo un objeto arrastrable (div), y algunos droppables (table TD's). Quiero que el usuario arrastre mi objeto arrastrable a uno de esos TD droppables.
Habilito arrastrable y droppable de esta manera:
$(".draggable").draggable();
$(".droppable").droppable();
El problema es que con esto el usuario puede arrastrar el div a cualquier lugar de la pantalla, incluso fuera del área droppable.
¿Cómo puedo limitar el área límite para el objeto arrastrable?
5 answers
Utilice la opción "contención":
JQuery UI API-Widget arrastrable-contención
La documentación dice que sólo acepta los valores: 'parent'
, 'document'
, 'window'
, [x1, y1, x2, y2]
pero me parece recordar que aceptará un selector como '#contenedor' demasiado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 13:12:47
$(function() { $( "#draggable" ).draggable({ containment: "window" }); });
De este código no se muestra. Código completo y Demo: http://www.limitsizbilgi.com/div-tasima-surukle-birak-div-drag-and-drop-jquery.html
Para limitar el elemento dentro de su padre:
$( "#draggable" ).draggable({ containment: "window" });
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-03 13:13:33
Aquí hay un ejemplo de código a seguir. # thumbnail es un padre DIV del # 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);
},
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-29 20:53:14
Véase extracto de la documentación oficial para containment
opción :
Contención
Predeterminado:
false
Restringe el arrastre dentro de los límites de lo especificado elemento o región.
Múltiples tipos soportados:
- Selector : El elemento arrastrable estará contenido en el cuadro delimitador del primer elemento encontrado por el selector. Si no se encuentra ningún elemento, no se establecer.
- Elemento : El elemento arrastrable estará contenido en el cuadro delimitador de este elemento.
- Cadena : Valores posibles:
"parent"
,"document"
,"window"
.- Array: Un array que define un cuadro delimitador en la forma
[ x1, y1, x2, y2 ]
.Ejemplos de Código:
Inicialice el arrastrable con la opcióncontainment
especificada:$( ".selector" ).draggable({ containment: "parent" });
Obtener o establecer la opción
containment
, después de la inicialización:// Getter var containment = $( ".selector" ).draggable( "option", "containment" ); // Setter $( ".selector" ).draggable( "option", "containment", "parent" );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 13:24:03
$(function () {
$( ".droppable-area" ).sortable({
connectWith: ".connected-sortable",
containment: ".droppable-area", //(parent div)
stack: '.connected-sortable div'
}).disableSelection();
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-05 17:53:05