次のように、クラスにアタッチされたイベントハンドラーがあります。
$('#container').on('click', '.myClass', function (e) {...
このハンドラー内で、クリックされた要素に別のクリック ハンドラーをアタッチしたいと考えています。一時ハンドラーがクリックされたら、元のハンドラーを再度有効にしたいと考えています。
私がやろうとしているのは (このフィドルに示されているように)、テキストのセクションをクリックできるようにし、それを入力テキスト ボックスに変更してから、変更を送信してテキストを再作成することです。
フィドルで見つかったように、成功せずに次のことを試しました:
$('#container').on('click', '.submit', function (e) {
var $this = $(this),
new_text = $this.prev().val();
e.stopPropagation();
$this.parent().off('click.temp').html(new_text);
});
$('#container').on('click', '.test', function (e) {
var $this = $(this);
$this.html("<input type='text' value='" + $this.text() + "'/><input class='submit' value='Submit' type='submit'>");
$this.on('click.temp', function (e) {
e.stopPropagation();
});
});
を使用し.off()
ても、要素ではなくクラスにアタッチされているため、クラスの元のハンドラーがキャンセルされないようです。
で質問に部分的に答えたと思いますが、e.stopPropagation()
まだうまく機能しておらず、これが最善の方法であると確信していません:)
注:この投稿はアイデアに関連していますが、使用していませんthis
。