jQueryを使用して匿名イベントハンドラを削除するにはどうすればよいか把握しようとしています。匿名関数のイベントハンドラを正しく削除する
私はjQueryオブジェクトを保持する変数を定義します。
var dom = $('#private-module');
その後、私のオブジェクト内に:
run: function() {
var button, that = this;
button = dom.append('<button class="btn">Click Me</button>');
button.on('click', function(event) {
console.log('Clicked!');
that.destroy();
});
},
destroy: function() {
var button;
button = dom.find('.btn');
button.off('click');
}
どんなに私は何をすべきか、私はボタンのクリックハンドラを殺すことはできません。スコープに関する私の理解のようなものには欠陥があります。この状況で、ハンドラを削除するのが好ましい方法は何ですか?私はイベントやあらゆる種類の名前空間を試してみましたが、運がないので、私が見落としたことは簡単なことです。おそらく、私はイベントハンドラのために匿名関数を使用してはいけません。ただ、.appendを使用するための私の推論へのボルト何かに
:ここ
http://jsperf.com/jquery-append-vs-appendto
は、最終的なソリューションです。
dom.append('<button class="btn">Send Message</button>');
button = dom.find('.btn');
button.on('click', function (event) {
sendTestMessage();
that.destroy();
});
私も.oneメソッドを使用することについて同意し、理解します。ありがとうございました。
実際にあなたがこのために 'one'機能を使用する必要があります。 – noob