私はクリックで読み込まれる断片があります。 css-tricksにあるこれらのリンクの上にページをスクロールします。私は次のエラーを取得する:不明なエラー:構文エラー、認識できない表現:#!Fragment_NamejQueryがハッシュバンで式を認識できない
私のjsが
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);//this is where the error is
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
私はVaRのターゲットを試してみましたHTML
<li><a href="#!Fragment_Name">Link Text</a></li>
は= $($(この。ハッシュ));喜びはありません
これでも問題はありません。これを修正し、コンソールからエラーを取り除く方法を知りたいだけです。
私はvar target = $(this.hash)を置き換えました。 var target = $(this.hash.replace(/([!])/ g、 "\\ $ 1"));エラーは次のようになりました:Uncaught Error:Syntax error、unrecognized expression:[name =!Fragment_Name] –
@DirtyBirdDesignこれはあなたの2番目のセレクタ( '$ ['[name =' + this.hash.slice(1)+ ']')です。 ')。 '' ''の前と '' 'の前に引用符を付けるだけです:' $( '[name = "' + this.hash.slice(1)+ '"]'); ' –
優秀! 2つを組み合わせて働いた。私は/ [!]/gが正確に何を理解していないのですか?私はそれが "!"をエスケープしていることを知っています。しかし理由はありません。 2番目の部分は、スライスの "#"をエスケープして取得します。大変ありがとうございました! –