Sticky-Header mit Javascript funktioniert nicht

  • Hallo,

    ich suche nun schon seit mehreren Stunden nach einer Lösung. Ich habe bereits alle möglichen Artikel zur JS einbindung und Fehlerbehebung auf deutsch und english gelesen, leider ohne Erfolg.

    Ich binde mein JS wie folgt ein. Alles andere habe ich auch ausprobiert, wenn der Code im Quelltext erscheint, sollte ja alles iO sein, oder?

    PHP
    function my_add_js(){
        $theme_uri = get_template_directory_uri();
        wp_enqueue_script( 'script01',  $theme_uri . '/javascript.js', false, '1.0', true );
    }
    add_action( 'wp_enqueue_scripts', 'my_add_js' );


    Habe das schon in den Footer verlagert, damit es nicht zu früh läd, brachte aber nichts.

    Das Script sieht so aus:

    Code
    $(function(){
      $(window).scroll(function(){
        var winTop = $(window).scrollTop();
        if(winTop >= 30){
          $(".NAVI").addClass("sticky");
        }else{
          $(".NAVI").removeClass("sticky");
        }
      });
    });


    Ich habe auch viele andere Scripte ausprobiert und mit Firebug geprüft. Nichts funktioniert.

    Der Rest ist, glaube ich, weniger relevant. Das Menu:

    HTML
    <section id="sticky" class="NAVI">
    HTML
    .sticky {
      position: fixed;
    }

    Der entscheidende Punkt ist, dass die Klasse nicht im Quelltext eingefügt wird. Wenn ich das ganze aber hier teste: https://codepen.io/soulrider911/pen/dGuEn dann funktionieren diese Scripte. Binde ich das also doch falsch ein? Oder übersehe ich ein Problem, dass Wordpress hat?

    Danke.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • WordPress bringt jquery mit, du musst dein Script aber an die WP Version anpassen, z.B.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Sorry, ich kenne mich nicht besonders gut mit JavaScript aus. Das Problem was ich mit dem ursprünglichen Script haben, ist, dass die Fixierung erst bei einem bestimmten Wert greift.

    Dieses Script scheint so zu arbeiten, dass es erst greift, wenn der Anker oben angelangt ist. Leider bekomme ich die Anpassung nicht so hin, dass es auf die oben beschriebene Weise funktioniert. Oder lässt sich das auch mit dem obrigen Script einfach erreichen?

  • Sorry für den verfrühten Post.

    Haben eine Script gefunden, was kürzer ist:

    Code
    $(document).ready(function() {
      var top = $('.NAVI').offset().top;
      $(window).scroll(function() {
          if($(this).scrollTop() > top) {
            $('.NAVI').addClass('sticky')
          } else {
            $('.NAVI').removeClass('sticky');
          }
        });
      });

    Habe aber eine einfachere Anpassungsmöglichkeit gefunden. Man packe einfach folgende Code drummherum.

    Code
    jQuery(function ($) {
        // ursprüngliches Script ...
    });



    Danke.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!