2

私はこれを使用しています

$(window).bind('hashchange', gotohash);

アプリにディープリンクを追加します。

私の問題は、<a>withをクリックしたときにもhref=#whatever 起動し、ユーザーがブラウザの戻るボタンと進むボタンを使用するか、ハッシュが含まれるURLに直接移動した場合にのみ使用したいということです。

私は考えhashChangeEnabled=true/falseていて、クリックするたびにそれをオフにします

しかし、それがクリックによるものかどうかを検出する簡単な方法はありますか?

ベストプラクティスは何ですか?


私の解決策

var disableHashChange = false;

$(window).bind('hashchange', function(){
  if(!disableHashChange ){
    gotohash();
  }
  disableHashChange = false;
});

$('.link').click(function(){
  disableHashChange = true;
}

imskyによる回答

var lastLinkEvent;

$(window).bind('hashchange', function(){
  if(lastLinkEvent != window.location.hash){
    gotohash();
    lastLinkEvent = "";
  }
});

$('.link').click(function(){
    lastLinkEvent = $(this).attr('href');;
}

ありがとう

4

2 に答える 2

3

場所を変更するとhashchangeイベントが発生するため、リンクがクリックされたときに発生させたくない場合は、link href属性を変更するか、を使用するクリックハンドラーを追加しますpreventDefault

編集:リンクを機能させたい場合は、たとえば、リンクイベントのみに制限されたアプリケーション変数をlastLinkEvent設定し、そのURLに含まれるハッシュに設定する必要があります。次に、処理関数で、lastLinkEventがすでにハッシュであるかどうかを確認し、ハッシュである場合は実行を禁止します。

于 2012-04-08T15:27:11.417 に答える
0

現在のターゲットがアンカータグであるか、hashchange 内にないかを確認するだけです

http://api.jquery.com/event.currentTarget/

于 2012-04-08T15:22:45.977 に答える