Gibt es eine Möglichkeit, einen Ereignis-Listener hinzuzufügen/zu entfernen, der eine Animation für die Navigationsleiste erstellt, wenn sich die Fensterbreite ändert?Hinzufügen/Entfernen von Ereignis-Listener bei Änderung der Fensterbreite
Wenn in einem kleinen Bildschirm (z. B. Breite < 768) → Wenn es einen Ereignis-Listener gibt, entfernen Sie es und reparieren Sie die Navigationsleiste an der Spitze. Beim Scrollen wird keine Animation angezeigt.
wenn sie in großen Bildschirm → einen Ereignis-Listener hinzufügen, Animation anzuzeigen, wenn Scroll
<div id="page-header">
<nav class="navbar"> </nav>
</div>
<script>
var flag = true;
$(window).on('scroll', function() {
if ($(window).scrollTop() > 54 && flag ==true) {
console.log('Event Fired');
$('#page-header nav').css({
'position': 'fixed',
'top': '-54px',
'width': '100%',
'z-index': '1000'
})
.animate({
top: '+=54px'
}, 500);
flag = false;
} else if ($(window).scrollTop() === 0) {
$('#page-header nav').css({
'position': 'relative'
});
flag = true;
}
});
</script>
Ich habe keine Ahnung, warum es nicht mehr funktioniert, wenn ich den Handler in einer separaten Funktion platzieren ... Und weil der Selektor Fenster ist, wird es nicht entfernen das andere Bildlaufereignis bei Verwendung von .off() -Methode ? – Akito
Oh, jetzt weiß ich, dass ich optionale Namespaces hinzufügen kann, um Ereignisse spezifisch zu machen. – Akito
habe herausgefunden, dass meine separate Funktion wegen der Klammer, die ich nach der Handler-Funktion hinzugefügt habe, nicht funktioniert. Ein anderes Problem ist hier, wenn von "aus" auf "an" geschaltet wird, manchmal funktioniert es nicht. Es ist instabil. – Akito