25

リンクがクリックされた後にハッシュ値を取得しようとしています。何か案は?

例えば

リンク

index.html#needThis

これは私の結果です:

index.htmlneedThis

「index.html」を削除するにはどうすればよいですか?

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    console.log(hash);
})
4

5 に答える 5

70

アップデート

最新のブラウザ(どのように戻るかはわかりませんhash)は、アンカー要素から直接抽出できます( #5を追加しました


好きなのを選びな ..

  1. var hash = $(this).attr('href').split('#')[1];
  2. var hash = $(this).attr('href').replace(/^.*?#/,'');
  3. var href = $(this).attr('href'), hash = href.substr(href.indexOf('#')+1);
  4. var hash = $(this).attr('href').match(/#(.*$)/)[1];
  5. var hash = this.hash.substr(1);

アップデート

これを再訪したところ、#2を改善できると思います

$(this).attr('href').replace(/^.*?(#|$)/,'');

この方法では、ハッシュが存在しない場合、URL 全体ではなく空が返されます。

于 2012-11-12T13:08:23.630 に答える
16

を使用するだけvar hash = window.location.hashです。

# の後にすべてを返します

または、URL を含む変数がある場合:

$(this).attr('href').substring($(this).attr('href').indexOf('#'))
于 2012-11-12T13:05:16.260 に答える
5

ウィンドウの場所のハッシュを試すことができます。

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    var hash2 = window.location.hash ;
    console.log(hash2);
})
于 2012-11-12T13:08:04.520 に答える
2

単純に使用しない理由:

window.location.hash

私にとってはうまくいきます。

于 2016-02-08T17:51:18.420 に答える
1

これを試して、

$('#myselector').on('click', 'a', function(){
    var url = $(this).attr('href') //get url
    var arr = url.split('#');
    alert(arr[0]); //URL without hash #
    var hash = arr[1];
    console.log(hash);
})​
于 2012-11-12T13:10:47.913 に答える