私は奇妙な問題に直面しています。私の具体的なHTMLは次のようになります。
<div class="pages">
<div class="dynamicPages"></div>
<div class="staticPages">
<div class="span4">
<ul class="nav nav-stacked">
<li>
<textarea class="newcomment field span12"
style="width: 350px; height: 20px; resize:none; font-size: 60%"
id="newcomment${page.id}"
name="newcomment${page.id}"
placeholder="Enter comment here...">
</textarea>
</li>
</ul>
</div>
</div>
</div>
今度は、divクラスspan4内にあるものと同じhtmlを生成し、次のように動的なdivクラスに追加することがあります。
$(".dynamicPages").append(page_html);
このダイナミックHTMLは、サーバーにajax呼び出しを行った後に生成します。
ユーザーがテキスト領域にEnterキーを入力すると、次のjquery関数があります。
$(".pages").on('keydown','.newcomment',function(event) {
if(event.which == '13'){
... do some stuff
}
});
今ではすべてが完璧に機能します。
今、私は私のテキスト領域のために次のプラグインをしたかった:
https://github.com/jaz303/jquery-grab-bag/blob/master/javascripts/jquery.autogrow-textarea.js
だから私は上記のjqueryを以下のように変更しました
$('.pages .newcomment').autogrow().keypress(function(event){
if(event.which == '13'){
...
}
});
そして、成功イベントでの前述のajax呼び出しでは、もう一度何かを行うので、autogrowは、このように動的に生成された要素に自分自身をアタッチします。jqueryを使用して動的に生成されたテキストエリアでメソッドを自動的に実行するにはどうすればよいですか?
$('.pages .newcomment').autogrow();
しかし、ダイナミックHTMLを追加すると、jquery関数がまったく呼び出されない場合があります。ページをリロードするとき、つまりサーバー側の属性からhtmlが入力されるとき、jquery関数が適切に呼び出されます。