0

ハッシュタグが入った簡単なリンクがあります。すなわち:

<a class="page_navigation" href="#something">click</a>

これをクリックすると、変数に「何か」の部分(ハッシュを差し引いたもの)が表示されます。

これまでのところ私は

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var href = $(this).attr('href');
});

明らかに、上記のコードを使用してhref varに「#something」が含まれることになります。#を削除するために何らかの正規表現を実行できることは理解していますが(まだ方法はわかりません)、もっと簡単な方法があるかどうか疑問に思います。いくつかの検索と置換コードを実行することなく、私が知らないhrefのこの部分にアクセスします。

何か案は?

注:「何か」をデータタグに保存できることも知っていますが、このコードを可能な限りDRYに保とうとしています。

4

4 に答える 4

2

が含まれていることがわかっている場合は#、次を使用できます。

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = this.href.replace(/^.*#/, "");
});

あるかどうかわからない場合は、次のように使用できます。

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = "";
    if (this.href.indexOf("#") {
        hash = this.href.replace(/^.*#/, "");
    }
});

HTML5では、次を使用できます。

this.hash

ただし、これは最新のブラウザのみを対象としています。

于 2012-05-24T01:36:12.530 に答える
1
var theHash = $(this).prop("hash").substr(1);

別の質問に関連する回答

于 2012-05-24T01:40:30.640 に答える
0

これには正規表現は必要ありません。あなたは簡単に行うことができます

var fragment;

if (window.location.hash) {
    fragment = window.location.hash;
}

これにより、#記号も取得されることに注意してください。それで、

fragment = "#something"

#記号が必要ない場合は、次のsubstringように使用します。

fragment = window.location.hash.substring(1)

アンカータグからハッシュフラグメントを選択する場合は、次のように実行できます。

var link = $('#yourAnchor').attr('href');
var fragment;
if (link.indexOf("#") !== -1) {
    fragment = link.substr(link.indexOf("#") + 1);
}
于 2012-05-24T01:37:46.430 に答える
0

デモ http://jsfiddle.net/UR3XN/

コード

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var href = $(this).attr('href');
    var equalPosition = href.indexOf('#'); //Get the position of '#'
    var withouthash = href.substring(equalPosition + 1); 
    alert(withouthash);
});​
于 2012-05-24T01:41:11.277 に答える