2016-10-11 9 views
2

ich benutze jQuery scrollTop() für ein festes Menü:Detect scrollTop(), wenn schwebte (Handgerät)

function fixed_menu(){ 

    if($('window').width() < 770) 
    { 
     var menu = $('.col-left.sidebar'); 
     var offset = menu.offset(); 
     var trigger = offset.top; 

     $(document).scroll(function(e){ 
      if($('body').scrollTop() >= trigger){ 
       menu.addClass('fixed'); 
      } else if ($('body').scrollTop() < trigger){ 
       menu.removeClass('fixed'); 
      } 
     }); 
    } 

} 
fixed_menu(); 

Wenn ich auf mein eigenes Telefon bin Testen (Android-Gerät, Moto G 2nd gen), Die if-Anweisung funktioniert auch beim Scrollen.

Wenn ich auf einem iPad Mini teste, initiiert die if-Anweisung nur, wenn der Hover fertig ist.

Wie kann ich diese Funktion auf bestimmten iOS-Geräten ausführen, während der Hover noch läuft?

Antwort

3

Die scrollTop() Funktion ist in verschiedenen Browsern problematisch. Sie können versuchen, mit $('html, body').scrollTop() und $(window).scroll()

function fixed_menu(){ 
    if($('window').width() < 770){ 
     var menu = $('.col-left.sidebar'); 
     var offset = menu.offset(); 
     var trigger = offset.top; 

     $(window).scroll(function(e){ 
      if($('html, body').scrollTop() >= trigger){ 
       menu.addClass('fixed'); 
      } else if ($('html, body').scrollTop() < trigger){ 
       menu.removeClass('fixed'); 
      } 
     }); 
    } 
} 
fixed_menu(); 
+0

Wie seltsam, na ja, es funktioniert, vielen Dank! :) –