2017-12-21 5 views
1

Ich mache feste Kopfzeile nach Fenster Scroll-Header sollte an der Spitze Ich behalte diesen Fehler Uncaught TypeError: Cannot read property 'top' of undefined Hier was könnte das Problem kann jemand lösen dies.In Fixed Header Uncaught TypeError oben undefined

HTML:

<header id="masthead" class="site-header is-sticky"> 
    <div class="header-box">   
     <div class="header-left"> 
      <div class="logo"> 
       <a href="#" title="" alt=""> 
        <img src="images/logo-dark.png"> 
       </a> 
      </div><!-- .logo--> 
     </div><!-- .header-left--> 

     <div class="header-right"> 
      <div class="primary-menu"> 
       <ul class="sf-menu"> 
        <li class="current"><a href="#">Headers</a> 
         <ul> 
          <li><a href="Fixed-header.html">Fixed header</a></li> 
         </ul> 
        </li> 
        <li><a href="#">About Us</a></li> 
        <li><a href="#">Services</a></li> 
        <li><a href="#">Blog</a></li> 
        <li><a href="#">Contact Us</a></li> 
       </ul> 
      </div><!--primary menu--> 
     </div><!-- .header-right--> 
    </div><!-- .is-sticky--> 
</header> 

Code:

$(document).ready(function(){ 
var num = $('.site-header.is-sticky').offset().top; 
    $(window).bind('scroll', function() { 
     if ($(window).scrollTop() > num) { 
      $('.site-header.is-sticky').addClass('fixed-header'); 
      $('.logo').css({'padding':'5px 0'}); 
      $('.logo img').css({'transform':'scale(0.70)','transition':'all .3s ease-out','transform-origin':'left'}); 
      $('.topbar-wrap').hide(); 
     } 
     else { 
      num = $('.site-header.is-sticky').offset().top; 
      $('.site-header.is-sticky').removeClass('fixed-header'); 
      $('.logo').css({'padding':'20px 0'}); 
      $('.logo img').css({'transform':'scale(1)'}); 
      $('.topbar-wrap').show(); 
     } 
    }); 

dank Advanced.

+0

teilen Sie bitte das DOM – brk

+0

Können Sie bitte den Header HTML posten. – Vivek

+0

Mögliches Duplikat von [Warum findet jQuery oder eine DOM-Methode wie getElementById das Element nicht?] (// stackoverflow.com/q/14028959) – Tushar

Antwort

1

Das DOM-Element kann nicht mit der angegebenen jquery gefunden werden, daher ein Fehler.

Meine Vermutung ist, dass durch die Klasse das Element immer nur es nicht findet, so wechseln ID und es wird aussortieren:

$(document).ready(function(){ 
var num = $('#masthead').offset().top; 
    $(window).bind('scroll', function() { 
     if ($(window).scrollTop() > num) { 
      $('.site-header.is-sticky').addClass('fixed-header'); 
      $('.logo').css({'padding':'5px 0'}); 
      $('.logo img').css({'transform':'scale(0.70)','transition':'all .3s ease-out','transform-origin':'left'}); 
      $('.topbar-wrap').hide(); 
     } 
     else { 
      num = $('.site-header.is-sticky').offset().top; 
      $('.site-header.is-sticky').removeClass('fixed-header'); 
      $('.logo').css({'padding':'20px 0'}); 
      $('.logo img').css({'transform':'scale(1)'}); 
      $('.topbar-wrap').show(); 
     } 
    }); 
1

Sie DOM-Element durch diese Art und Weise können auch anrufen: var num = $ ('. site-header.is-sticky: first-of-type') .offset().

+0

die gleiche Seite, die diesen Fehler nicht erhält, wenn ich zu anderer Seite gehe, die diesen Fehler erhält. – Husna

+0

Wenn Sie mehr als eine Objektklasse .site-header.is-sticky haben, können Sie $ ('. Site-header.is-sticky') verwenden. Je (function() { num = $ (this) .. Offset(). top; }); – Vladimir

+0

jetzt bekomme ich num nicht definieren. if ($ (window) .scrollTop()> num) – Husna

Verwandte Themen