2012-05-10 4 views
3

私はハッシュ変数を取得するための簡単なJavaScript関数があります。jqueryのハッシュは、ナビゲーション

$(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> 

をしかし、私は、リンクをクリックした場合、私は前のVARを受けます。

例:

私の最初のクリックは、私がメッセージEmptyを受信して​​、私の第二のクリックが222222ある場合、私はクリックイベントは、ハッシュフラグメントが追加され前に解雇されたためですa=1&aa=10

+0

あなた 'nav_anchorを()'を呼び出した後location.hashが適用されるようです。 – Glycerine

答えて

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"); } 
} 

あなたは、ページの読み込みの変数を取得したい場合は、location.hashを使用してURLからそれを読む必要があるでしょう。

Example fiddle

+0

$(これ)を送る必要はありません..これで十分です。それをdom要素のままにします。 –

+0

良い点、ありがとう。 –

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"); } 
    } 
}); 
+1

nav_anchor関数はどこにでも定義できるようです。 $ .ready呼び出しの中に入れる必要はありません。 – lig

関連する問題