0
私は古いシステムを回避し、何らかの条件でサブミットボタンをハイジャックし、ハンドラを適用してから、このハンドラをアンバインドします。私はbind
とunbind
を使用していますが、問題のフォームを起動するたびにイベントが累積的にバインドされています。jQueryハンドラからのイベントのバインド解除
class MyForm(){
constructor(){
// button in question
this.$submit = $('#submit');
this.$submit.bind('click', this.submit.bind(this));
return this;
}
submit(){
return this.doAjaxStuff();
}
doAjaxStuff(){
var self = this;
return $.post(file, data).always(function(){
self.$submit.unbind('click', self.submit);
});
}
}
残念ながら私は新しいMyForm
イベントを作成するたびに、再び結合したが、非結合決してれます。
同じクラスを呼び出しておく。この度、ページの読み込みではなく、デリゲートになります。私は時間の影響を受けやすいプロジェクトで悪いコードを扱っています。これが私が考えることができる唯一の解決策です。私はそれが働くことができることを知っている、私はちょうど私の方法が動作していない理由を知らない。 – BarryBones41
また、名前空間イベントも可能ですが、これはページロード時にのみ一度だけ委譲されます – charlietfl
これを試してみてください$ submit.off( 'click.special')。on( 'click.special'、this.submit.bind (this)); ' – charlietfl