あらかじめJavaScriptのソースに、
$(function() {
$('#divHoge').hoge();
});
を記述しておき、JavaScriptのinnerHTMLで
<div id="divHoge"></div>
を挿入した時にhoge()を実行させたいのですが、innerHTMLで普通に挿入すると実行されないようです。実行する方法はあるでしょうか?
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> jQuery.fn.extend({ hoge: function() { return this.text('hoge') } }); $(function() { $(document).on('DOMNodeInserted', '#divHoge', function() { $(this).hoge() }); /* $('#divHoge').live('DOMNodeInserted', function() { $(this).hoge() }) */ setTimeout(function() { document.body.innerHTML = '<div id="divHoge">piyo</div>'; }, 1000); }); </script> </head> <body> </body> </html>
jQueryのbind/live/delegateの違いまとめ、と新API .on()の使い方 - y-kawazの日記
live系でDOMNodeInsertedを待ち構えてるのは負荷が高いかもしれない。(よくわからん)
2012/04/21 10:35:07適当にinnerHTMLした後にsetTimeoutでhoge()する方がいいかも。
回答ありがとうございます。
2012/04/30 10:30:16おかげさまでうまくいきました!
ありがとうございました。