jQuery Draggable y problema de desbordamiento [cerrado]
-
03-07-2019 - |
Pregunta
Tengo un efecto no deseado cuando arrastro un div desde un contenedor div que se configura como desbordamiento: scroll.
He encontrado un ejemplo de otra persona en la que ha tenido el problema, pero no he podido encontrar una solución
Ejemplo en el contenedor de pegado
Lo que sucede es que el desplazamiento se incrementa, puedo ver por qué este sería el comportamiento deseado si quisiera arrastrar a un destino dentro de la división desplazable, pero quiero poder llevarlo fuera de su alcance de desplazamiento.
Solución 3
Sin duda vale la pena prestar atención a la documentación
http://docs.jquery.com/UI/Draggable#option-scroll
desplazamiento
Tipo: Booleano
Valor predeterminado:true
Si se establece entrue
, el contenedor se desplaza automáticamente al arrastrar.
Todos los que entren aquí, aprendan de mi error, RT (F) M !!!
Otros consejos
Tuve un problema similar al habilitar un arrastre entre dos divs de desbordamiento automático. Con la ayuda de las respuestas anteriores, encontré que esta combinación funciona para mí (Safari 5.0.3, jquery-1.4.4, jquery-ui-1.8.7):
appendTo: 'body',
containment: 'window',
scroll: false,
helper: 'clone'
appendTo
Elemento, SelectorDefault: 'padre'
El elemento pasado o seleccionado por la opción appendTo se utilizará como el contenedor del ayudante que se puede arrastrar durante el arrastre. De manera predeterminada, el ayudante se agrega al mismo contenedor que el que se puede arrastrar.
Ejemplos de código Inicialice un elemento arrastrable con la opción appendTo especificada.
$('.selector').draggable({ appendTo: 'body' });
La solución clónica funciona, pero tiene dos problemas.
Primero: el clon se agrega al cuerpo. Dependiendo de su css, su elemento puede cambiar los estilos, ya que antes de que comience, está dentro de otro elemento y durante el arrastre, estará directamente en el elemento del cuerpo.
Segundo: a veces el elemento DEBE moverse, y el clon deja que el objeto esté allí.
Entonces, la solución para estos problemas es:
$('.selector').draggable({
helper: 'clone',
start: function(){
$(this).hide();
},
stop: function(){
$(this).show()
}
});
La configuración de la opción de desplazamiento no evita que los niños se oculten en el área de desbordamiento. He ideado un trabajo por turnos que usa la opción de ayuda. Échale un vistazo:
http://pastebin.me/164f0a4073496563fe3179ddcec5fd6d
También aquí hay una referencia a otra publicación que hice:
elementos de jquery ui arrastrables no 'arrastrable' fuera de la división de desplazamiento
También puede especificar qué tipos de elementos no desea incluir.
<div class="draggable">
<h2>This will drag the div</h2>
<ul>
<li>This won't drag the div</li>
</ul>
</div>
Aplique esta propiedad de cancelación para ignorar el evento en elementos secundarios especificados
$('.draggable').draggable({cancel : 'ul'});