A pesar de que ya hay un par de respuestas con soluciones de trabajo, este tipo de tarea es crítica para el rendimiento (el evento de cambio de tamaño de la ventana se desencadena muchas veces mientras el usuario cambia el tamaño de la ventana), por lo que le sugiero encarecidamente que cuide del rendimiento Por favor, eche un vistazo al código optimizado a continuación:
/* Do not waste time by creating jQuery object from window multiple times.
* Do it just once and store it in a variable. */
var $window = $(window);
var lastWindowWidth = $window.width();
$window.resize(function() {
/* Do not calculate the new window width twice.
* Do it just once and store it in a variable. */
var windowWidth = $window.width();
/* Use !== operator instead of !=. */
if (lastWindowWidth !== windowWidth) {
// EXECUTE YOUR CODE HERE
lastWindowWidth = windowWidth;
}
});
Plus, que podría estar interesado en la comprobación de los patrones Debounce/Throttle - que mejoran el rendimiento enormemente en casos como este.
esto es genial ... –
¿Hay alguna forma de actuar solo cuando el ancho ha cambiado Y cuando es menor que un valor de píxel? P.ej. if ($ (ventana) .width() <500) combinado con el anterior? – Dan382
El código anterior funciona, pero su rendimiento no es óptimo. El objeto de la ventana jQuery se crea varias veces, aunque podría hacerse solo una vez. Además, el nuevo ancho de las ventanas se calcula sin sentido varias veces. – Anton