2016-06-25 13 views
1

Meine unteren Codes funktionieren in Chrome gut, aber es gibt den folgenden Fehler in Safari. Gibt es eine Lösung, um es zu beheben?TypeError: undefined ist kein Objekt nur in Safari und iOS

jQuery('.mk-responsive-nav > li > a').click(function() { 
    var href = jQuery(this).attr('href').replace('#', ''); 
    jQuery(window).scrollTop(jQuery("section[data-anchor='" + href + "']").offset().top); 
    console.log(jQuery("section[data-anchor='" + href + "']").offset().top ); 
}); 

Safari Fehler:

Typeerror: undefiniert ist kein Objekt ('jQuery ("Abschnitt [data-anchor ='" + href + "']" auswertet..) Versetzt() top')

Antwort

0

Schwer zu sagen, weil ich den Kontext html nicht sehen kann. Ich würde empfehlen, versuchen, die Variable href abfangen und stellen Sie sicher, es ist tatsächlich ein jQuery Object vor dem Scrollen der window. Ich habe es geschafft, denselben Fehler zu bekommen, den Sie hatten.

$(function() { 
 
    jQuery('.mk-responsive-nav > li > a').click(function() { 
 

 

 
    var href = jQuery(this).attr('href').replace('#', ''); 
 
    var target = jQuery("section[data-anchor='" + href + "']"); 
 

 
    console.log(target.offset().top, 'YOUR EXACT ERROR IN SAFARI WHEN CLICKING FAIL LINK: ', jQuery("section[data-anchor='" + href + "']")); 
 

 
    if (target.length) { 
 
     console.log('scrolling to: ', target.offset().top); 
 
     jQuery(window).scrollTop(target.offset().top); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="mk-responsive-nav"> 
 
    <li><a href="#section-1">This will work</a> 
 
    </li> 
 
    <li><a href="#section-fail">This will fail</a> 
 
    </li> 
 
</ul> 
 

 
<section data-anchor="section-1">Section 1.</section> 
 
<section data-anchor="section-2">Section 2.</section>

Verwandte Themen