Auch wenn es schon ein paar sind von Antworten mit funktionierenden Lösungen, ist diese Art von Aufgabe leistungskritisch (Fenstergrößenänderungsereignis wird viele Male ausgelöst, während ein Benutzer die Größe des Fensters ändert), also empfehle ich stark, dass Sie sich um das pe kümmern rformance. Bitte haben Sie einen Blick auf den optimierten Code unten:
/* 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 können Sie in den oberen Debounce/Throttle Muster interessiert sein - sie verbessern die Leistung enorm in Fällen wie diesem.
das ist großartig ... –
Gibt es eine Möglichkeit, nur zu handeln, wenn nur die Breite geändert UND wenn weniger als ein Pixelwert? Z.B. if ($ (window) .width() <500) kombiniert mit obigem? – Dan382
Der obige Code funktioniert, aber seine Leistung ist suboptimal. Das jQuery-Fensterobjekt wird mehrmals erstellt, obwohl es nur einmal ausgeführt werden kann. Auch die neue Fensterbreite wird sinnlos mehrfach berechnet. – Anton