このオートサイズ機能を機能させようとしています。ページの読み込み前にテキストエリアを作成すると、正常に動作します。
$(document).ready(function(){
$('.hellothere').autosize();
});
ただし、ページがロードされた後でjQueryを使用してテキストエリアを作成すると、この関数にバインドされません。
できません.autosize()
。新しく作成されたテキストエリアごとに呼び出す必要があります。これがイベントバインディングである場合は可能ですがdelegate()
、プラグインを初期化しているため、実際に動作する要素が必要になります。
新しく作成されたテキストエリアごとに .autosize() を呼び出す必要があります。
または、jquery プラグインである liveQuery を使用できます。これは優れたプラグインであり、新しく作成されたすべての要素に自動サイズを自動的に適用します。
あなたはライブクエリを試すことができます
$(document).ready(function(){
$('.hellothere').livequery(function() {
$(this).autosize();
});
});
ページにロードされていない要素をバインドするには、jQuery バージョンに関してこれらのいずれかを使用します。
$("a.offsite").live("click", function(){ alert("Goodbye!"); }); // jQuery 1.3+
$(document).delegate("a.offsite", "click", function(){ alert("Goodbye!"); }); // jQuery 1.4.3+
$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); // jQuery 1.7+
参照元:
.on()はあなたが探しているものだと思います:リンク
ライブ イベント ハンドラーをセレクションにアタッチします (まだ存在するかどうかに関係なく)。
$(function(){
// Attach a listener to all paragraphs
$('body').on(('click', 'p', function(event){
$(this).css('color', 'blue');
});
// Dynamically add a paragraph
$('body').append('<p>Hello World!</p>');
});
しかし、とにかく jQuery でテキストエリアを追加しているので、挿入した直後に.autosize()を呼び出さないのはなぜですか?
$('body').append('<textarea class="hellothere"></textarea>').autosize();
誰かが提供した回答の一部を使用して削除すると、これは機能します。
$('.hellothere').live('click',function(){ $(this).autosize(); })