2016-06-25 5 views
1

私の下のコードはChromeで問題なく動作していますが、Safariで次のエラーが発生します。それを解決する解決策はありますか?TypeError:undefinedはSafariと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 ); 
}); 

サファリエラー:

TypeError例外:未定義オブジェクト(評価 'jQueryの( "セクション[データ・アンカー='" + HREF + "']" ではないが。)(オフセット)トップ」。 )

答えて

0

コンテキストhtmlが表示されないため、難しいと言えます。 href変数をトラップし、windowをスクロールする前に実際にはjQuery Objectであることを確認することをおすすめします。私はあなたが持っていたのと同じエラーを得ることができました。

$(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>

関連する問題