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

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

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

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

Q&A

解決済

3回答

4557閲覧

html読み込み後に、jQueryで追加した要素に対するイベントが動作しない

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

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

1グッド

2クリップ

投稿2015/12/02 13:27

jQueryのappendで、事後的(html読み込み後)に追加した要素をクリックすると、イベントが起こるようにしたいのですが、うまくいきません。
このteratailの質問投稿画面で、「タグ」を追加すると「jQuery ☓」と表示され、この「☓」をクリックすると、このタグが消えますが、これと全く同じことがしたいです。
(teratailのJavascriptを読み解くことができれば解決できるのですが、分かりませんでした。)

私が書いたコードは、下記のとおりです。

javascript

1$(function(){ 2$("#tags").autocomplete({ 3 source: availableTags, 4 autoFocus: true, 5 delay: 500, 6 minLength: 1, 7 select: function(event, ui){ 8 $("#tagdiv").append("<span class='badge'>selected! <span class=\"glyphicon glyphicon-remove remove\"></span></span>") 9} 10}); 11}); 12}) 13$(function(){ 14 $("span.remove").on("click",function(){ 15 $("span.badge").remove(); 16 }); 17 });

inputに何らかの文字を打ち込むと、autocompleteで表示がなされ、
例えば「jQuery ☓」のように表示がされます。
この「☓」をクリックすると、「jQuery ☓」が消えてほしいです。
現状では、「☓」をクリックしても何も起きません。

html読み込み時に既にある要素でテストするため、

html

1<span class="remove">test <span class="glyphicon glyphicon-remove"></span></span>

「test ☓」という記述を予めしておいて、「☓」をクリックしたところ、
うまく消えてくれたので、
jQueryで事後的に追加した要素に対してうまくいかないだけだと思います。

どのように対処すればよいかお分かりの方、ご教示頂けないでしょうか。
よろしくお願いします。

av-👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

☓を押下した際の以下のコードを

javascript

1$(function(){ 2 $("span.remove").on("click",function(){ 3 $("span.badge").remove(); 4 }); 5 });

↓のように変更するとうまくいくかもしれません。

javascript

1$(function () { 2 $(document).on('click', 'span.remove', function(){ 3 $("span.badge").remove(); 4 }); 5});

投稿2015/12/03 00:24

Kaoru_A

総合スコア124

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

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

退会済みユーザー

退会済みユーザー

2015/12/03 13:31

できました!ありがとうございました。
guest

0

せめてjsで使っている要素のHTMLは提示しないと(Jqueryのバージョンだったり)
デバックがむずかしいですね。

本題の原因は、

Syntaxエラーになっている。

修正後は

javascript

1<script type="text/javascript" src="jquery-1.11.3.min.js"></script> 2<script type="text/javascript" src="jquery-ui-1.11.4/jquery-ui.min.js"></script> 3<script type="text/javascript"> 4$(function(){ 5 6 var availableTags = [ 7 "java", 8 "abc"]; 9 10 $( "#tags" ).autocomplete({ 11 source: availableTags, 12 autoFocus: true, 13 delay: 500, 14 minLength: 1, 15 select: function(event, ui) 16 { 17 $("#tagdiv").append("<span class='badge'>selected! <span class=\"glyphicon glyphicon-remove remove\"></span></span>") 18 } 19 }); 20 }); 21 22 23$(function(){ 24 $ele = $("span.remove"); 25 $ele.on("click",function(){ 26 //$("span.remove").on("click",function(){ 27 $("span.badge").remove(); 28 }) 29 }); 30</script> 31 32<span class="remove">test <span class="glyphicon glyphicon-remove"></span></span> 33 34<input id="tags" type="text"></input> 35<div id="tagdiv"></div>

必要な部分は個人で追加しました。

以上でどうでしょうか。

投稿2015/12/02 22:30

liguofeng29

総合スコア801

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

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

退会済みユーザー

退会済みユーザー

2015/12/03 13:32

ありがとうございます。 今後は、要素のHTMLも記述するようにします。
guest

0

} }); }); })

一目閉じカッコ多すぎに見えますね。
Syntaxエラーが出てるか確認してみましょう。
ブラウザでAlt+Ctrl+Iか、F12キーを押すとデベロッパーツールが出て来て、エラーが出ていないか確認する事ができますよ。

Netbeansというエディタ(IDE)を使うとその辺もちゃんと見てくれるのでお勧めです。
是非使ってみてください。

投稿2015/12/02 13:51

miyabi-sun

総合スコア21158

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

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

退会済みユーザー

退会済みユーザー

2015/12/03 13:33

ありがとうございます。 カッコの誤りがありました。デベロッパーツールを使って確認するようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問