0

次のコードがあります。

$("#myID").click(function () {
    //do something
})

ある時点で、Web ページの別の部分でのユーザー アクションは、クリック時に発生するアクションを変更する必要があります。

$("#myID").click(function () {
    //do something different
})  

私の質問は、これを行う正しい/最も効率的な方法は何ですか? 現在、上記のコードの 2 番目のチャンクを実装しているだけですが、これにより奇妙な動作が発生しますか? つまり、クリック時に 2 つの異なるアクションが実行されるようになりますか? または、コードの 2 番目のブロックが最初のブロックをオーバーライドします。

4

5 に答える 5

1

どちらも実行されるので、いいえ、2 番目の呼び出しは最初の呼び出しを上書きしません。

基本的な jsFiddle の例

そして、pimvdb が指摘するように、それらはバインドされた順序で実行されます。

于 2012-12-04T20:24:59.183 に答える
0

最初にいつでもクリック機能をアンバインドできます: http://api.jquery.com/unbind/

于 2012-12-04T20:27:57.970 に答える
0

そうです、それらは「スタック」します。つまり、$("#myID") はイベント ハンドラーのリストを保持し、クリック時に両方を実行します。

元のハンドラーが不要になった場合は、バインドを解除する必要があり$("#myID").off('click')ます。または、古いバージョンの jquery を使用している場合は$("#myID").unbind('click')`. http://api.jquery.com/unbind/

于 2012-12-04T20:28:10.153 に答える
0

コードでは、両方のクリックが実行されます。前にクリックイベントのバインドを解除してみてください

$("#myID").unbind("click")

http://api.jquery.com/unbind/

于 2012-12-04T20:28:48.957 に答える
0

グローバル変数を追加してから、コードのどの部分を実行する必要があるisAnotherEvent = falseかをイベントで確認できます。別の部分を実行するには、make するだけです。clickisAnotherEvent = true

var isAnotherEvent = false;
$("#myID").click(function () {
  if(!isAnotjerEvent){
    //do something
  } else {
    //do something else
  }
})

$("#btnChangeEvent").click(function(){
  isAnotherEvent = true;
}
于 2012-12-04T20:31:17.363 に答える