0

A と B の 2 つのボタンがあります。A をクリックするとハッシュタグが変わり、window.onhashchange関数を呼び出したいと思います。しかし、B をクリックすると、URL に手動でハッシュタグが追加されます。window.onhashchange後者の場合、トリガーされたくありません。

4

3 に答える 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の動作例です。類似していると仮定すると、次のようになります。clickjQuery >= 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 に答える