内部アンカーリンクへのスムーズなスクロールを実装するには、次のコードを使用します。コードはPCおよびAndroidでは動作しますが、Appleデバイスでは動作しません。CSSを使用する:jqueryでセレクタを使用しない
// The function used for smooth scrolling internal links
jQuery(document).ready(function($) {
var topbanner=$("#top-banner").css("height");
var navbar=$(".navbar").css("height");
var brand=$(".brand").css("height");
var gap =$(".page-style").css("margin-top");
topbanner = (isNaN(topbanner = parseInt(topbanner, 10)) ? 0 : topbanner),
navbar = (isNaN(navbar = parseInt(navbar, 10)) ? 0 : navbar),
brand = (isNaN(brand = parseInt(brand, 10)) ? 0 : brand),
gap = (isNaN(gap = parseInt(gap, 10)) ? 0 : gap),
topmargin=topbanner+navbar+brand+gap;
$('a[href*="#"]:not([href*="tab"]').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top-topmargin
}, 1000);
return false;
}
}
});
});
問題は行にあります。アンカーは#tabから始まるが、これはAppleデバイス上で動作していないよう、それが認識されない文ですというエラーをスローしない限り、私はアンカーをクリックする上で動作するようにそれをしたいと思い
$('a[href*="#"]:not([href*="tab"]').click(function() {
。それが動作するようにコードを修正する方法はありますか?
あなたはタイプミスがあります。 'a [href * ="# "]:not([href * =" tab "]'は最後に ')'がありません。あなたのコードはおそらくどこでも働くことができませんでした。 – BoltClock
FF、IE、Androidで動作します。 – Naz
あなたは正しいです、私はちょうど[この質問](http://stackoverflow.com/questions/29120822/how-why-is-attribute-string-a-valid-queryselector-js-bug)にコメントしたことを思い出しました。無効であるにもかかわらず特定のブラウザで動作するように見えるいくつかのquerySelectorAllセレクタがリストされています。 – BoltClock