2011-12-27 11 views
1

jQuery自動拡張プラグインは、内容に合わせてテキストエリアを拡張します。機能は次のとおりです。AJAX関数の後でJQuery AutoGrowプラグインが無効になる

(function($) { 
    /* 
    * Auto-growing textareas; technique ripped from Facebook 
    */ 
    $.fn.autogrow = function(options) { 

     this.filter('textarea').each(function() { 

      var $this  = $(this), 
       minHeight = $this.height(), 
       lineHeight = $this.css('lineHeight'); 

      var shadow = $('<div></div>').css({ 
       position: 'absolute', 
       top:  -10000, 
       left:  -10000, 
       width:  $(this).width(), 
       fontSize: $this.css('fontSize'), 
       fontFamily: $this.css('fontFamily'), 
       lineHeight: $this.css('lineHeight'), 
       resize:  'none' 
      }).appendTo(document.body); 

      var update = function() { 

       var val = this.value.replace(/</g, '&lt;') 
            .replace(/>/g, '&gt;') 
            .replace(/&/g, '&amp;') 
            .replace(/\n/g, '<br/>'); 

       shadow.html(val); 
       $(this).css('height', Math.max(shadow.height() + 20, minHeight)); 
      } 

      $(this).change(update).keyup(update).keydown(update); 

      update.apply(this); 

     }); 

     return this; 

    } 

})(jQuery); 

次に、$('textarea').autogrow();がトリガされます。 JQueryのロード関数の後に、新しいテキストエリアにロードします。私はこれを引き起こした。

$('.commentslogic').load(window.location.href + ' .commentslogic .inner', function(){ 
$('textarea').autogrow(); 
}); 

ただし、新しいテキストエリアには適用されません。さらに、FireBugにはエラーは報告されていません。助けて!

フィドルディー・ディー・フィドルディーhttp://jsfiddle.net/JTmND/8/

+0

このコードのjsFiddleを投稿すると非常に役に立ちます。 –

+0

もし私が誤っていないのであれば、jiddleはAJAX呼び出しをサポートしていません。私が間違っている場合は、 –

+0

@JoshSmith simulating fiddle http://jsfiddle.net/JTmND/8/ –

答えて

2

としてはコメントで考え出しDUM、このバイオリンは解決策である:新しいテキストエリアがDOMに追加されているかは問題ではありませんhttp://jsfiddle.net/JTmND/11/

$(document).ready(function() { 
    $('textarea').autogrow(); 

    $('.button').click(function() { 
     $('.test').html('<textarea></textarea>'); 
     $('.test').find('textarea').autogrow(); 
    }); 
}); 

(手動またはajaxコールバックメソッド)、jqueryセレクタを使用して自動拡張機能を割り当てる必要があります。

+0

まだ何も... –

+0

'$( 'textarea')。triggerHandler( 'change');'? – Armin

+0

http://jsfiddle.net/7WkQY/ < - これは直接動作します。 – Armin

関連する問題