¿Cómo puedo determinar la dirección de la operación de cambio de tamaño? Intenté buscar en Google y encontré un ticket en jquery ui, que decía que estaba arreglado. Pero no hay un documento sobre cómo usarlo.jQuery UI redimensionable - dirección de operación
Respuesta
No estoy seguro de si nos referimos que desea restringir la operación de cambio de tamaño a un eje determinado, o si desea saber qué dirección el cambio de tamaño en realidad Ocurrió en.
La respuesta de RaYell funciona si usted deseaba hacerlo. Discutiré esto último.
Si configura un tamaño variable como esto:
var r = $("#resizable");
r.resizable();
Digamos que desea saber qué dirección se produjo el cambio de tamaño en después el usuario suelta el botón del ratón. Vamos a enlazar una función al evento de cambio de tamaño parada:
r.bind('resizestop', function(event, ui) {
// determine resize deltas
var delta_x = ui.size.width - ui.originalSize.width;
var delta_y = ui.size.height - ui.originalSize.height;
}
Utilizando el objeto de interfaz de usuario pasado, podemos determinar el cambio relativo del tamaño restando el nuevo tamaño del tamaño de edad. Después de eso, puede usar delta_x
y delta_y
como lo desee. Construyamos una cadena que corresponda a uno de los mangos.
r.bind('resizestop', function(event, ui) {
// determine resize deltas
var delta_x = ui.size.width - ui.originalSize.width;
var delta_y = ui.size.height - ui.originalSize.height;
// build direction string
var dir = '';
if (delta_y > 0) {
dir += 's';
} else if (delta_y < 0) {
dir += 'n';
}
if (delta_x > 0) {
dir += 'e';
} else if (delta_x < 0) {
dir += 'w';
}
// do something with this string
alert(dir);
});
Tenga en cuenta que esto no será necesariamente el que volver mango en realidad se utilizó para realizar el cambio de tamaño si usted tiene asas en ambos lados del elemento, sólo que es dirección neta.
Esta solución es genial, cuando quiero determinar el cambio al final del cambio de tamaño. Pero el problema es que me gustaría saber la dirección al comienzo del redimensionamiento. Sé que esto puede parecer absurdo, ya que no puedo adivinar, si el usuario reducirá o ampliará el tamaño. Pero lo único que necesito saber es cuál fue el elegido: este u oeste (solo esos dos son posibles en mi aplicación). – gruszczy
Además de la declaración final en esta respuesta, ¿no fallará si, por ejemplo, se mueve el asa "oeste"? En ese caso, si se reduce el ancho, moviendo el asa hacia el este, delta_x será menor que cero, por lo que la dirección informada será 'w'. –
Creo que la opción handles
es lo que está buscando:
$(selector).resizable({handles: 'n, s, e, w'})
donde las letras representan direcciones geográficas:
- n - norte (arriba)
- s - sur (inferior)
- e - este (derecha)
- w - oeste (izquierda)
- ne - Nordeste (arriba a la izquierda)
- SE - sureste (abajo a la izquierda)
- NW - Noroeste (arriba a la izquierda)
- sw - Suroeste (parte inferior izquierda)
Uso cualquier subconjunto de los anteriores que te gusten
Puede encontrar la documentación para esa opción here
No, el OP no desea definir posibles direcciones, sino determinar qué dirección se eligió realmente. – AGuyCalledGerald
Esto no aborda la pregunta original. – SeanK
En el inicio, cambiar el tamaño, y dejar de devoluciones de llamada:
$(this).data('resizable').axis
$(".ui-resizable-handle").live("mousedown", function(e) {
$.ui.curResizeDirection = this.className.split("-").pop();
console.log($.ui.curResizeDirection);
});
Sé que esto es una pregunta de hace mucho tiempo, pero las soluciones dadas no resuelven mi problema. Encontré una manera de llegar al controlador en la función de inicio y está trabajando en FF y Chrome. Mi organización no es compatible con IE, por lo que no se ha probado, pero en este caso la forma FF debería funcionar, ya que es el manejo de eventos más estándar.
$(".resizable").resizable({
start: function (event, ui) {
var dir = event.toElement ? event.toElement : event.originalEvent.target;
}
});
dir
es entonces el controlador real, usted tiene que encontrar la clase y la dirección desde la que (analizo de la lista de clases, si consigo no voy a publicar lo que hago).
Es útil saber la dirección en la que el cambio de tamaño está ocurriendo antes del cambio de tamaño por muchas razones, y realmente creo que jQuery debería haber incluido una forma de saber qué asa se había agarrado.
Más tarde editar: jQueryUI proporciona captadores para su API, en este caso para obtener la lista de mango que acababa de hacer
var handles = $(".selector").resizable("option", "handles");
(que es directamente de la boca de los caballos). En mi caso, simplemente verifiqué si era 'n' o 's' (arriba o abajo) y luego calculé el cambio de tamaño en el objeto agarrando el tamaño original en la función de inicio, y usando la función de cambio de tamaño como un ciclo para seguir calculándolo Si el tamaño disminuía, la dirección era hacia arriba si desde el mango sur y hacia abajo si desde el mango norte, y si aumentaba, significaba que la dirección descendía desde el mango sur o hacia arriba desde el mango norte.
Para saber si fue 'n' o 'sacado', acabo de tomar dir
desde arriba y corté todo excepto la última letra del nombre de la clase devuelta, ya que la clase es algo así como ui-handle-s
.
De hecho, es bastante gracioso ya que no terminé usando la mayor parte de esto, ya que lo cambié para cambiar el tamaño solo desde el fondo. Como no lo estoy usando, espero que alguien más lo encuentre útil.
Estoy experimentando algo extraño al respecto. Si hago clic en el borde del control de cambio de tamaño, el elemento que se devuelve es en realidad el elemento que está presente justo fuera del elemento redimensionable. El elemento aún cambia de tamaño, sin embargo. ¿Alguna posibilidad de toparte con eso? – smurf
No tuve ningún problema así, pero las cosas que estoy cambiando de tamaño son realmente pequeñas, de aproximadamente 100 px de ancho con altura variable. Como no terminamos usando esto, solo encuentro el cambio de tamaño. si solo está cambiando el tamaño de un lado que podría ser una opción. – maggiekh
Sí, creo que es un problema con otro evento jquery mousemove en el otro div que está interrumpiendo el evento de cambio de tamaño original – smurf
JSONx tiene una buena solución, pero también se puede utilizar el built-in eventos:
$('#resizable').resizable({
handles: 'n,s',
start: function(event, ui) {
var handleDirection = event.srcElement.className.split("-").pop();
}
});
El código hace que el elemento '#resizable' de tamaño variable y pone asas en los lados norte y sur del elemento . Si se hace clic y se arrastra en el controlador norte, handleDirection es 'n'. No he podido encontrar una forma similar de hacer esto con el evento 'detener'.
probar este código:
$("#resizable").resizable({
handles: "n, e, s, w",
resize: function(event, ui) {
//your codes here
}
});
El div se cambia el tamaño en cuatro direcciones utilizando el maneja propiedad.
Échale un vistazo aquí:
http://www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#resizable
- 1. Alternativas a jQuery UI redimensionable
- 2. jQuery UI redimensionable no funciona en absoluto
- 3. jQuery UI redimensionable - Cómo espesar la manija
- 4. jQuery-UI Redimensionable: escalar todos los elementos de tamaño en proporcionalidad con div redimensionable
- 5. JQuery UI redimensionable no admite la posición: fijo; ¿Alguna recomendación?
- 6. jQuery-UI: redimensionable: ¿cómo aumentar el tamaño del borde arrastrable?
- 7. Jquery diseño redimensionable no funciona
- 8. jQuery mango redimensionable z-index
- 9. Cómo detener la propiedad redimensionable de un elemento en jQuery UI
- 10. jQuery UI redimensionable: altura automática cuando se utiliza el asa este solo
- 11. Usar JQuery UI Datepicker con íconos de Jquery UI Theme
- 12. Controles personalizables personalizables en JQuery UI
- 13. jquery ordenable y redimensionable con elementos de lista superpuestos
- 14. jQuery UI Posición del botón de diálogo
- 15. jQuery UI - Convierta jQuery UI Datepicker a hora UNIX
- 16. Emulación de marco redimensionable
- 17. Jquery-ui Arrastrable y dinámico Jquery-ui arrastrable?
- 18. Mezcla de JQuery Mobile y JQuery UI
- 19. jQuery bloque UI excepciones
- 20. jQuery UI datepicker rendimiento
- 21. jQuery UI vs. Scriptaculous?
- 22. alternativa a jquery ui
- 23. JQuery UI Autocompletar Posición
- 24. jQuery UI aquí tamaño
- 25. jQuery UI WYSIWYG?
- 26. Uploadify + jQuery UI
- 27. JQuery Ui o AjaxControlToolkit?
- 28. jQuery UI Diálogo + Validar
- 29. jQuery UI modal Tutorial
- 30. jQuery UI sin HTML
También me gustaría saber qué mango se ha hecho clic en el inicio del cambio de tamaño. – Karl
Consulte mi respuesta http://stackoverflow.com/a/20833716/776687 – Webars