2016-10-14 5 views
2

jQueryクリックイベント関数では、基本イベントが完了する前にクリックイベントが発生し、URLが更新されるので、イベントを制御できます。つまり、リンクのハッシュはまだ利用できません。window.location.hashclickイベント/関数中にURLハッシュを取得する

e.target.hashは、ハッシュ値を取得するために<a>要素に到達するよりも優れています。またはonclickイベントを介して必要な変数を渡しますか? 「より良い」とは、ブラウザ間の互換性やエラーが発生しやすいことです。例えば

<a class="accountLink" href="#account/123456">Account 123456</a> 
$('.accountLink').click(function(e){ 
    console.log(e.target.hash); 
    console.log(window.location.hash); 
}); 

ログイン:

#account/123456 
(blank on initial click) 

https://jsfiddle.net/r1xpsut1/1/

答えて

1

はそれがより適切であろうwindowonhashchangeイベントのように聞こえるあなたの要件を考える:

window.onhashchange = function() { 
    alert(window.location.hash); 
} 

Updated fiddle

+0

パーフェクト、ありがとうロリー!ハッシュ更新を監視する1つの関数が、このインスタンスに確実に収まり、簡略化されます。 –

0

Mozilla Web APIによると、Event.targetEvent.srcElementが代わりに使用されている8には、Internet Explorer 6を除いて、すべての近代的なブラウザでサポートされているので、あなたがそれをサポートしたい場合は、使用することができます。

var target = (event.target || event.srcElement); 

は実際には、言った.eventプロパティis defined as

この イベント、例えばトリガー呼び出しの左側にDOM要素は:

element.dispatchEvent(event) 

したがって<a> youselfに到達したと同じです。

関連する問題