append等で追加したhtmlの要素をクリックした時にあれこれしたいって場合への対処法。
現象について
$(function() { $('.append_btn').on('click',function() { $('body').append('<div class="more_append"></div>'); }); $('.more_append').on('click',function() { alert("more_appendが押されたよ!"); }); });
したいこととしては、
.append_btnをクリックしたら.more_appendをhmtlに追加、.more_appendをクリックしたらアラートが鳴るというもの。
なんだけど、上の記述だと.more_appendをクリックしても何も起きない。
・・・あれ?onだったら大丈夫って話じゃないの?
解決方法
どうやら追加した要素に対してclickは正攻法では無理っぽい。
なので、すでにある要素を使って対処する
というわけでできたものがこちらになります。
$(function() { $('.append_btn').on('click',function() { $('body').append('<div class="more_append"></div>'); }); $(document).on('click','.more_append',function() { alert("more_appendが押されたよ!"); }); });
クラスをセレクタとして指定することで実現できる。
では。