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

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

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

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

Q&A

解決済

3回答

281閲覧

Jqeuryでappendの使い方

ozaki566

総合スコア29

jQuery

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

0グッド

0クリップ

投稿2017/12/17 02:30

お世話になります。
親カテゴリ内でボタンを押すと要素が追加され、さらにその子カテゴリ中でも要素を追加したいのですが、
下記のボタンAは問題なく動作するのですが、押したあとに表示されるボタンBのボタンが動作せず悩んでいます。
appendで追加したボタンは文字と認識されて動作させれないのでしょうか?
ご指導の程お願いいたします。

<ul> <li>要素1</li> <li>要素2</li> <li>要素3</li> </ul> <button id="button_a">ボタンA</button>
[Jquery] $("#button_a").on("click", function(){ $("ul").append("<button id='button'>ボタンB</button>"); }); $("#button_b").on("click", function(){ $("ul").append("<li>小要素</li>"); });

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

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

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

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

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

guest

回答3

0

$("ul").append("<button id='button'>ボタンB</button>"); とされていますが、そもそもHTMLの文法上おかしなことになります。UL要素の直下にbutton要素は置けません。

また、idを指定してしまっているので、HTML上に同じidが複数作成されることになるので、それも文法上問題があります。そういう場合はクラスで書きましょう。

【ul 要素 - HTML | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/ul


後から追加した要素にイベントを適用させるには下記のような方法があります。

JavaScript

1$( 'body' ).on( 'click', '.button', function() { 2 // 何らかの処理 3} );

【【jQuery】onメソッドの使用方法 - Qiita】
https://qiita.com/katsunory/items/7b50d399329767a893e1

【実践、jQuery - .on()と.off()を使いこなす 1 | CodeGrid】
https://app.codegrid.net/entry/practical-jquery-1

投稿2017/12/17 04:00

kei344

総合スコア69407

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

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

0

ベストアンサー

button_aで作られる要素(button_b)のクリック動作を、要素が作られる前に定義しているからでしょう。
期待する動作かどうかはわかりませんが、ボタンBを動かすだけなら以下でできると思います。

JavaScript

1$("#button_a").on("click", function(){ 2 $("ul").append("<button id='button_b'>ボタンB</button>"); 3 $("#button_b").on("click", function(){ 4 $("ul").append("<li>小要素</li>"); 5 }); 6});

※id=buttonとなっていたところは勝手にbutton_bに直しました。

投稿2017/12/17 03:07

kentei_syunrai

総合スコア946

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

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

0

もしかしてこういうことなのでしょうか?

javascript

1$(function(){ 2 $('#button_a').on('click',function(e){ 3 $('li:not(:has(.button_b))').append($('<button>').addClass('button_b').text('ボタンB')); 4 }); 5 $('ul').on('click','.button_b',function(e){ 6 $(this).closest('li:not(:has(ul))').append($('<ul>')); 7 $(this).closest('li').children('ul').eq(0).append($('<li>').text('小要素')); 8 }); 9});

HTML

1<ul> 2<li>要素1</li> 3<li>要素2</li> 4<li>要素3</li> 5</ul> 6<button id="button_a">ボタンA</button>

投稿2017/12/18 01:53

yambejp

総合スコア114829

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問