1

<div>jQuery でイベントを発生させるas ボタンが体にあるclick

<div id="pause"><img id="pausebtn" src="pause.png" /></div>

イベントハンドラをこのボタンにバインドしました

$('#pause').bind('click', btnHandler);

function btnHandler() { /* something incredible happens here*/ }

私がやりたいことは、最初click#pauseハンドラーが別の関数に変更された後、

$('#pause').bind('click', btnHandler2);

どんな助けでも大歓迎です。ありがとう!

4

4 に答える 4

2

unbindイベント ハンドラーとbind新しいハンドラーが必要になります。

bind()andunbind()メソッド に関する注意: jQuery 1.7 では、.on() メソッドは、イベント ハンドラをドキュメントにアタッチするための推奨されるメソッドです。

function btnHandler() {
  // unbind old event - supply the handler here so nothing else gets unbound
  $('#pause').off('click',btnHandler);
  // rebind new event
  $('#pause').on('click',btnHandler2);
}

$('#pause').on('click',btnHandler);

との違いは、メソッドを使用して委任されたイベントを作成する機能にあり.bind()ます。委任されたイベントは、イベントがバインドされるときに存在する必要がある「ターゲット」の親にバインドされます。子孫セレクターを指定することで、親に含まれるすべての要素に対してこのイベントをトリガーし、指定したセレクターに一致させることができます。.on().on()

例:

// this will be triggered for any element with class 'bla' 
// inside the body tag, no matter when said element was added.
$('body').on('click','.bla',console.log);
于 2013-06-10T13:11:50.643 に答える
2

.one()を使用して、一度だけ実行されるイベント ハンドラーを登録します。

$('#pause').one('click', btnHandler);

function btnHandler() {
     $(this).on('click',btnHandler2);
}
于 2013-06-10T13:16:44.577 に答える
1

これは、最初のイベント ハンドラー内で実行できます。

function btnHandler(event) {
    $(this).unbind();
    $(this).bind('click', btnHandler2);
}
于 2013-06-10T13:10:02.637 に答える
0

関数でイベントのバインドを解除できます..ie

function btnHandler(event){
    //your code
    $(this).unbind(event);
    $('#pause').bind('click', btnHandler2);
}
于 2013-06-10T13:11:36.273 に答える