質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2168閲覧

[jQuery] Clickで追加したフォームに処理を適用するには?

xjaPANDA

総合スコア124

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/07/22 00:39

ボタンを押すとフォームが追加されていくもの対して、各フォームに設置した[削除]ボタンを押すと、追加したフォームを削除できるようにしたいです。
下記のコードについて、ページをめくったときにはじめからあるフォームには、$('td.del').click() の処理が適用されますが、追加したフォームについては、削除ボタンを押しても、処理が適用されません。これを回避するような書き方はありますでしょうか?

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title></title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <script type="text/javascript"> $(function() { $('button#add').click(function(){ var tr_form = '' + '<tr>' + '<td><input type="text" name="text_1[]"></td>' + '<td><input type="text" name="text_2[]"></td>' + '<td>[×]</td>' + '</tr>'; $(tr_form).appendTo($('table > tbody')); }); $('td.del').click(function(){ $(this).parent().replaceWith(); }); }); </script> <form action="data.php" method="post" enctype="multipart/form-data"> <table> <thead> <tr> <th>テキスト</th> <th>テキスト</th> </tr> </thead> <tbody> <tr> <td><input type="text" name="text_1[]"></td> <td><input type="text" name="text_2[]"></td> <td class="del">[×]</td> </tr> </tbody> <tfoot> <tr> <td ><button id="add" type="button">追加</button></td> </tr> </tfoot> </table> <input type="submit" name="send" value="送信"> </form> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

javascript

1$('td.del').click(function(){ 2 $(this).parent().replaceWith(); 3});

この書き方だと、onloadイベントが起きた瞬間に存在していたtd.delに対してのみイベント登録されますので、あとから追加されたものでは動作しないのです。
あとから登録したものでも動作するようにするためには、上位タグ視点で、このように登録します。

javascript

1$('form').on('click','td.del',function(){ 2 $(this).parent().replaceWith(); 3});

それと、

javascript

1 '<td>[×]</td>'

この部分は class="del"指定がないようですが…。

投稿2017/07/22 00:47

zohnam

総合スコア1441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xjaPANDA

2017/07/22 01:20

ありがとうございます。on()を使うのですね。とて勉強になりますw。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問