jQueryでUL要素にLI要素が追加されたときに関数を実行する方法を教えて下さい
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
指定したコールバック関数を DOM の変更時に実行させる API です。
投稿2017/03/21 05:45
総合スコア36104
0
liを追加する事自体がjQueryに依存しているのであれば
その箇所に関数を実行する行を追記しておけばよいのでは?
追記
特定のトリガーで発火するなら、それと同じトリガーで処理を追加しておけばよいのでは?
javascript
1<script> 2$(function(){ 3 $('#btn').on('click',function(){ 4 $('#myUL').append($('<li>')); 5 }); 6 $(document).on('click','#btn',function(){ 7 alert('test!'); 8 }); 9}); 10</script> 11 12<input type="button" value="add" id="btn"><br> 13<ul id="myUL"> 14<li>test</li> 15</ul> 16
前者が元から設定されていれば、後者を追記する
さらに
javascript
1<script> 2$(function(){ 3 $('#add').on('click',function(){ 4 $('#myUL').append($('<li>')); 5 }); 6 $('#del').on('click',function(){ 7 $('#myUL li:last-child').remove(); 8 }); 9}); 10$(function(){ 11 var myLen=$('#myUL li').length; 12 setInterval(function(){ 13 if($('#myUL li').length > myLen){ 14 alert('test!'); 15 } 16 myLen=$('#myUL li').length; 17 },0); 18}); 19</script> 20 21<input type="button" value="add" id="add"> 22<input type="button" value="del" id="del"><br> 23<ul id="myUL"> 24<li>test</li> 25</ul> 26
あまりお勧めしませんが、#myULの子要素の数を数え続けて
変更があったときに実行するという処理もあります。
今回の場合不等号でチェックして追加時のみ発火させていますが
変化があったら常に実行する場合は!=などで対応してください
投稿2017/03/21 05:39
編集2017/03/21 08:21総合スコア114829
0
こちらを推します。
ただ、対象ブラウザが古かったら setInterval 監視も併用する必要があります。
http://caniuse.com/#feat=mutationobserver
投稿2017/03/21 08:48
総合スコア18162
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/21 08:48
2017/03/21 08:54
2017/03/21 08:57
2017/03/21 09:03
2017/03/21 09:16