簡単なコードで問題を説明しようとします。jqueryイベントハンドラを上書きする方法
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
これで明らかに2回警告されますが、警告が1回だけ必要です。たくさんの方法を試しましたが、結果はありません。
ありがとうございました。
簡単なコードで問題を説明しようとします。jqueryイベントハンドラを上書きする方法
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
これで明らかに2回警告されますが、警告が1回だけ必要です。たくさんの方法を試しましたが、結果はありません。
ありがとうございました。
jQuery 1.7以降では、イベントハンドラを削除するにはoffを使用し、追加するにはonを使用する必要がありますが、引き続きclick
の略語を使用できます。
$('#clickme').off('click').on('click', fireclick);
$('#clickme').off().on('click', fireclick);
オリジナルの答え:あなたはすべてのクリックハンドラを置き換えたい場合は
、関数の引数なしで最初unbindを呼び出します。すべてのイベントハンドラを置き換える場合は、イベントタイプを指定しないでください。
$('#clickme').unbind('click').click(fireclick);
$('#clickme').unbind().click(fireclick);
Bah!あなたはコールを連鎖させるために勝つが、多分あなたの答えを洗練して、特定のハンドラが再追加されるようにするだけだ。 $( '#clickme')。unbind( 'click'、fireclick).click(fireclick) –
質問は「jqueryイベントハンドラを上書きする」という質問でした。これを行うためには、毎回アンバインドを呼び出す必要があります(これが私が両方の呼び出しを繰り返した理由です)、関数の引数を指定しないでください。 – tvanfosson
これはあなたが質問に答えたときにこれを行う正しい方法だったので、私はupvotedしました。つまり、「新しく改良された」方法はon()メソッドとoff()メソッドであると私は信じています。この回答は「jquery replace event handler」という検索の最初のGoogle検索結果であるため、回答に追加すると便利です。 click(fireclick); '$( '#clickme')。off( 'click')。 。 – chucksmash
私は、余分な呼び出しを排除しようとしていますが、毎回これらの両方を呼び出すことを確認することができtyhatの短いでしょう:
$('#clickme').unbind('click', fireclick);
$('#clickme').click(fireclick);
ありがとう、それは今働きます:) – taras
あなたが最初に削除するためにjQueryの機能unbindを使用することができますイベント:
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').unbind('click', fireClick); // fireClick won't fire anymore...
$('#clickme').click(fireclick); // ...but now it will
は、あなたが他のリスナーを削除しないことを確認するために、名前空間を使用して...最初にクローズするか、二つ目は画面に表示されないことができている:なしとして
$('#clickme').off('click.XXX').on('click.XXX', fireclick);
限りコードはXXX
を使用しているため、あなたが気づいていない他の動作を混乱させていないことを確認できます。
イベントをバインドする呼び出しが2回発生する状況について、いくつかのコンテキストを与えることはできますか?たぶん、2番目の呼び出しがコードの機能を少し変更するのを防ぐことができます。 –
関連:http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in-jquery –
「Voila」です。 :) –