0

以下のようなコードを見つけました。

HTML コード:

<div id="myButton">Click Here</div>

JQuery コード:

$("#myButton").unbind("click").bind("click",function(){
   alert("Working")
});

要素をバインドする前にunbind("click")が必要なのは何ですか?

アンバインドが使用されていない場合にも機能します。以下のように

$("#myButton").bind("click",function(){
   alert("Working")
});

どれが一番いいですか?違いはなんですか?

4

4 に答える 4

2

clickこれは、他のイベントリスナーが接続されていないことを確認するだけです。したがって、あなたのハンドラーは、#myButton

編集: @TJ Crowder がコメントに記載されているように、unbind()を呼び出す以外の方法でアタッチされたハンドラーには影響しませんbind()

また、次の点にも注意してください。

jQuery 1.7 の時点で、要素のイベント ハンドラーをアタッチおよび削除するには、.on() および .off() メソッドが推奨されます。

( jQuery.unbind() docからの抜粋)。実際には、メソッドによってunbind() 内部的に実装さoff()れています)。

検討:

$("#myButton").bind('click', function () {
  console.log('click 1');
});

$("#myButton").unbind('click').bind('click', function () {
  console.log('click 2');
});

// When clicked, prints "click 2"

対:

$("#myButton").bind('click', function () {
  console.log('click 1');
});

// note: no unbind here
$("#myButton").bind('click', function () {
  console.log('click 2');
});

// When clicked, prints "clicked 1" followed by "clicked 2"
于 2013-08-27T10:01:08.663 に答える
0

要素の「クリック」イベントのバインドを解除すると、実際にはその要素に関連付けられているすべての onclick イベントが削除されます。つまり、HTML フォームの入力フィールドに onclick イベントがあり、それが関数を呼び出す場合、バインドは解除されます。バインド解除後、その要素の onclick 関数を呼び出す別のクリック イベントをバインドしています。

于 2013-08-27T10:04:05.873 に答える