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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

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

Q&A

解決済

2回答

9012閲覧

jqueryプラグイン "select2" を使ったフォームを動的に追加(複製)すると上手く動かない。

YukihideKanda

総合スコア13

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

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

0グッド

2クリップ

投稿2017/08/29 08:26

編集2017/08/29 08:29

###前提・実現したいこと

現在とあるサイト制作をしており、登録フォームのセレクトボックスでjqueryプラグインの「select2」を使っていますが、(自作で設置した)フォーム追加ボタンで動的に同じフォームを追加した際に、追加されたセレクトボックスがクリックできないため、動くようにしたいと思っています。

###発生している問題
キャプチャ内のフォーム最上部のセレクトボックスは機能が実装されるのですが、ボタンでフォームを動的に追加するとそれ以降のフォームのセレクトボタンがクリックしても何も起こらない状態になります。

イメージ説明

###該当のソースコード

HTML

1 <div class="add_url_area"> 2 <div class="form-group"> 3 <label for="page_name" class="col-md-2 control-label required">ページ名</label> 4 <div class="col-md-6"> 5 <input id="inputPageName" class="form-control" name="page_name" type="text" placeholder="株式会社xxxのページ"> 6 </div> 7 </div> 8 <div class="form-group"> 9 <label for="url" class="col-md-2 control-label required">ページURL</label> 10 <div class="col-md-3"> 11 <input id="inputUrl" class="form-control" name="url" type="password" placeholder="https://123456.com"> 12 </div> 13 </div> 14 <div class="form-group"> 15 <label for="authority" class="col-md-2 control-label">ページカテゴリ</label> 16 <div class="col-md-3"> 17 <select id="selectCategory" class="form-control select_category" name="category"> 18 <option value="1">美容</option> 19 <option value="2">コーポレートサイト</option> 20 <option value="3">健康食品</option> 21 <option value="4">フェス</option> 22 <option value="5">レストラン</option> 23 </select> 24 </div> 25 </div> 26 <btn class="col-md-offset-2 btn btn-warning url_add_btn">他のURLも追加</btn> 27 </div> 28

jquery

1$(function() { 2 $(".select_category").select2({ 3 placeholder: "カテゴリを選択", 4 allowClear: true 5 }); 6 7 $(".select_category").select2("val","") 8 9 /* ページフォーム追加*/ 10 var addUrlArea = ".add_url_area" 11 var addForm = $(addUrlArea).html(); 12 13 $(document).on("click", ".url_add_btn", function() { 14 $(addUrlArea).append(addForm); 15 }); 16}); 17

###試したこと
イニシャライズが必要といくつかのサイトで発見し、試して見たのですが上手く行かずの状況です。

https://stackoverflow.com/questions/27561509/select2-initialize-select-after-appending-data-to-existing-select

###補足情報(言語/FW/ツール等のバージョンなど)

jqueryはver2.2.4、 select2はver4.0.3を使っています。

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

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

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

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

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

kei344

2017/08/30 12:54

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
guest

回答2

0

ベストアンサー

DOMの読み込みが完了したときにだけselect2が動いてますね。
動的に追加されたものに対しては動かないので、onの中にもう一度記述してみたらどうでしょうか?

javascript

1$(function() { 2 $(".select_category").select2({ 3 placeholder: "カテゴリを選択", 4 allowClear: true 5 }); 6 7 $(".select_category").select2("val","") 8 9 /* ページフォーム追加*/ 10 var addUrlArea = ".add_url_area" 11 var addForm = $(addUrlArea).html(); 12 13 $(document).on("click", ".url_add_btn", function() { 14 $(addUrlArea).append(addForm); 15 $(".select_category").select2({ 16 placeholder: "カテゴリを選択", 17 allowClear: true 18 }); 19 }); 20}); 21

投稿2017/08/29 09:05

onodo

総合スコア97

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

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

YukihideKanda

2017/08/29 10:09

>onodoさん 試して見たところ、正しく挙動し、突破口が見えました。 ありがとうございます!!
guest

0

単にHTMLだけコピーしてもうまくいきません(とくにイベント回り)。
面倒でも追加した対象にselect2()を呼んで適用してください。

投稿2017/08/29 09:06

x_x

総合スコア13749

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

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

YukihideKanda

2017/08/30 13:11

>x_xさん コメントありがとうございます。不慣れなもので基本的な部分でつまづいてしまいましたが、他のプラグイン含め、イベント絡みのものは気をつけて行こうと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問