2017-01-29 23 views
0

jQueryのスクロールページはFirefoxでは機能しません(Chromeでうまく動作します) メニューアイテムをクリックすると、メニューのセクションと、それはChromeでのみ動作します。

私はそれは私の質問のタイトルしたがってscrollTopスプライトに関係していると推定https://jsfiddle.net/4yrorr9k/

function setBindings() { 
    $('nav a, #slidebox a').click(function(e){ 
    event.preventDefault(); 

    var sectionID = e.currentTarget.id + 'Section'; 

    $('html body').animate({ 
    scrollTop: $('#' + sectionID).offset().top}, 500) 
    }); 
} 

私のコードが間違っているのだろうか。

答えて

0

問題がありますが、イベントはde開発者のコ​​ンソールで見ることができる(firefoxのイベントはグローバルではありません)スクロールトップがfirefoxで動作しなくなる原因となった問題は、setBindings関数のアニメーションのセレクタです。

$('html body').animate({ 
     scrollTop: $('#' + sectionID).offset().top}, 500) 
}); 

変更この

$('html, body').animate({ 
     scrollTop: $('#' + sectionID).offset().top}, 500) 
}); 

フィドルに:https://jsfiddle.net/2ynbto8x/

+0

したがって、event.preventDefault()の代わりに。 e.preventDefault()が必要です。 –

+0

@AKAIはい、あなたは正しいですが、それは関数(変数)で渡す変数名に完全に依存します。変数がイベントであればevent.preventDefault()、次にe.preventDefault() – Deep

+0

aaah、ok、今すぐ取得する –

0

ここではささいなことの数、( 'htmlの本体')のあなたのjQueryのセレクタであること、メイン1(すなわちaがあります。 html内のボディー) - どちらかにするか、コンマを挟む必要があります。

これは、Chromeが本体要素をスクロールするため、FirefoxがHTML要素をスクロールするためです。

また、宣言されていない「イベント」変数を使用しようとしているので、firefoxはエラーをスローします。したがって、これを 'e'に置き換える必要があります。また

、あなたの「上」結果はそう、私はintにそれを解析し、その後、これはピクセル位置であることを指定したい、小数ことができるように:

ここjsFiddleを改正
$('html, body').animate({ 
    scrollTop: parseInt($('#' + sectionID).offset().top) + 'px'}, 500) 
}); 

https://jsfiddle.net/kitkit/jftfdq70/2/

関連する問題