A と B の 2 つのボタンがあります。A をクリックするとハッシュタグが変わり、window.onhashchange
関数を呼び出したいと思います。しかし、B をクリックすると、URL に手動でハッシュタグが追加されます。window.onhashchange
後者の場合、トリガーされたくありません。
質問する
305 次
3 に答える
0
コードなしで私が提案できるのは、イベントを引き起こしたボタンの ID をチェックし、それに応じて行動することだけです。
于 2013-04-15T15:20:09.663 に答える
0
あなたの質問から、私はあなたがこれに沿ってPHPでHTMLを生成したと仮定しています:
<ul id='list-of-links'>
<li id='A'><a href="#posA">Link A</a></li>
<li id='B'><a href="#posB">Link B</a></li>
</ul>
A が B 以外のことをしたい場合、JavaScript ではハッシュ関数を使用できます。
var targetHash = window.location.hash.slice(1);
if( targetHash != 'posB' ) {
//do something as it's not 'posB'
};
それが役立つことを願っています。
于 2013-04-15T16:06:12.307 に答える
0
この回答とこれの助けを借りて、イベントハンドルを一時的に削除できます。これは、イベントを含む jsfiddle.netの動作例です。類似していると仮定すると、次のようになります。click
jQuery >= 1.8
// Initialization, add some events
$.hashchange(...);
// Store event handles for hashchange
hashchange_handles = [];
$.each( $._data($('#foo').get(0), "events")['hashchange'], function(i,handle){
// alert(handle.handler);
hashchange_handles.push(handle.handler);
});
// Remove handles
$.off('hashchange');
// Do your stuff here
// Restore event handler
length = hashchange_handles.length;
for(var i=0; i<length; i++) {
$.hashchange( hashchange_handles[i]);
}
それはうまくいったclick
ので、うまくいけばうまくいくでしょうhashchange
。
注: コードが完全ではないことはわかっています。調整する必要があります。さらに、私はそれをテストしましたclick
。
于 2013-04-15T15:59:48.143 に答える