背景:私のウェブサイトには、JavaScriptとAjaxを介して編集できる値がいくつかあります。Ajaxは正常に動作しており、値を編集できますが、値を保存した後、ページをリロードせずに再度編集することはできません。
私はこれに問題を減らしました:元の要素はHTMLフォームに置き換えられます。フォームが送信されると、フォーム自体は新しいバージョンのdisplay要素に置き換えられますが、イベントリスナーは壊れています。
期待どおりに機能しないサンプルJSコード( JSfiddle )をいくつかまとめました。
var text = $('<em/>').text('click me!');
text.click(function() {
var button = $('<input type="button" value="Click me, too" />');
button.click(function() {
$('#container').html(text);
});
$('#container').html(button);
})
$('#container').html(text);
何が起こるか:
- 表示されている現在の値
- テキスト
click
edテキストがフォームに置き換えられた後(簡単にするためにテキスト要素が保存されています) - ボタン
click
のテキストが再び表示された後 click
テキストの場合は、手順2と同様に機能します(現在は機能しません)
オブジェクトを再度click
使用すると、イベントが失われるのはなぜですか?text