【場面】
以下のようなHTMLがあったとき、各ボタンを押すとそれに対応したhtmlを挿入したいと考えています。
【解決したいこと】
jQueryの各変数の共通部分を、どうにかして短くまとめたい。
//html <div class="add_name1">名前1を追加するボタン</div> <div class="add_name2">名前2を追加するボタン</div> <div class="add_name3">名前3を追加するボタン</div>
//jQuery var name1 = ` <div class="sample"> <input type="text" name="name1[]"> </div> `; var name2 = ` <div class="sample"> <input type="text" name="name2[]"> </div> `; var name3 = ` <div class="sample"> <input type="text" name="name3[]"> </div> `; // 名前1を追加するボタンが押されたとき $('.add_name1').on('click',function(){ $(this).after(name1); }); // 名前2を追加するボタンが押されたとき $('.add_name2').on('click',function(){ $(this).after(name2); }); // 名前3を追加するボタンが押されたとき $('.add_name3').on('click',function(){ $(this).after(name3); });
上記のコードで、確かに想定した動き(各ボタンを押すとそれに対応したhtmlを挿入)ができるのですが、どうしても気になることがあります。
それは、各varの中の「<div class="sample">」「</div>」が何度もコード内に出てくることです
。
関数などを使って、何回も「<div class="sample">」「</div>」を書かなくて済む方法があれば知りたいのですが、どのように書けばよいかわかりません。
例えば、phpなら、以下のように書けばいいと思うのですが、jQueryでの書き方がわかりません。
//php function hoge($name){ echo '<div class="sample"><input type="text" name="'.$name.'[]"></div>'; } //関数hoge($name)を使用することで、何度も同じコード(div class="sample">~)を書かなくて済む $name1 = hoge('name1'); $name2 = hoge('name2'); $name3 = hoge('name3');
初歩的な質問で大変お恥ずかしいのですが、ご存知の方がいらっしゃいましたら、どうかご教授いただけましたら幸いです。
何卒、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/01 01:06