3

ハッシュ変数を取得するための単純な JavaScript 関数があります。

$(document).ready(function(){
    $("a").click(function(){
        nav_anchor()
    });
    function nav_anchor() {
        var aurl = location.hash;
        aurl = aurl.split('#');
        if (aurl[1]) { alert(aurl[1]); }
        else { alert("Empty");  }
    }
}); 
<a href="#a=1&aa=10">11111111111</a>
<a href="#b=1&bb=10">22222222222222</a>
<a href="#c=1&cc=10">333333333</a>

しかし、リンクをクリックすると、以前の変数が表示されます。

例:

最初のクリックで11111メッセージを受け取りEmpty、2 回目のクリックでメッセージ222222を受け取るa=1&aa=10

4

2 に答える 2

5

http://jsbin.com/uxitoy/2/edit

$(document).ready(function(){
    $("a").click(function(){
        nav_anchor(this);
    });
    function nav_anchor(o) {
        var aurl = o.hash;
        aurl = aurl.split('#');
        if (aurl[1].length>0) { alert(aurl[1]); }
        else { alert("Empty");  }
    }
}); 
于 2012-05-10T11:08:20.240 に答える
2

これは、ハッシュ フラグメントが URL に追加される前にクリック イベントが発生するためです。URL からハッシュを取得する代わりに、リンクから取得します。

$("a").click(function(){
    nav_anchor(this)
});

function nav_anchor(el) {
    var aurl = el.href;
    aurl = aurl.split('#');
    if (aurl[1]) { alert(aurl[1]); }
    else { alert("Empty");  }
}

ページの読み込み時に変数を取得する場合は、 を使用して URL から読み取る必要がありますlocation.hash

フィドルの例

于 2012-05-10T11:08:07.810 に答える