jQuery .replaceWithメソッドを使用して、ユーザーが投稿に返信またはコメントをキャンセルできるようにしています。返信ボタンは、クリックするとテキストボックスを作成するときに機能します。ただし、キャンセルボタンをクリックすると、ページを再読み込みせずに元のポストに戻る代わりにページが更新されます。キャンセルボタンを正しく機能させるにはどうしたらいいですか?ご協力ありがとうございました!jQuery .replaceWith()メソッドがクリック時にリフレッシュする
<form method="post">
<input type="hidden" name="post_id" value="{{ p.key.id() }}">
<input type="hidden" name="user_id" value="{{ user.key.id() }}">
<input type="button" name="reply" id="{{ p.key.id() }}" value="Reply">
</form>
<script>
$("#{{ p.key.id() }}").click(function() {
var reply = $("<textarea name='reply_content' style='resize: none; width: 550px; height: 100px;'></textarea><br><input type='submit' name='reply' value='Reply'><input type='submit' id='cancel_{{ p.key.id() }}' value='Cancel'>")
$("#{{ p.key.id() }}").replaceWith(reply);
});
$("#cancel_{{ p.key.id() }}").click(function() {
var cancel = $("<input type='button' name='reply' id='{{ p.key.id() }}'' value='Reply'>");
$("#{{ p.key.id() }}").replaceWith(cancel);
});
</script>
をjQueryのためのあなたのセレクタに{{p.key.id()}}とは何ですか? – calcazar
@calcazar私はJinja2テンプレートを使用しているので、テンプレート側に変数を渡しています。 – Young
cancel_whateveridが動的に追加されているため、追加時にイベントをバインドするか、委任を使用する必要があります。そのコードはコードサンプルを持っています。 ( "受け入れられた"答えが常に最高ではないことに注意してください) –