2011-01-18 17 views
2

に重複したアプリケーションを防ぐために、どのように私の最初のプラグインが、私は次のようしている:jQueryの - 要素

$('.comment_content').live('focus click', function() { 
    $(this).bTextAreaResizer(); 
}); 

私はCOMMENT_CONTENTボックスは、ページの読み込み後に動的に時々現れるので、クリックに住んでする必要があります。私は、ブラウザが停止するのを待つたびに、bTextAreaResizer()をテキストエリアに再適用し続けていることに気付きました。私が持っているプラ​​グインで:

(function($){ 
    $.fn.bTextAreaResizer = function(options) { 

    return this.each(function() { 

     //bind events 
     $(this).bind('scroll keyup', function() { 
      resizeTextArea($(this)); 
     }); 

にはどうすれば我々はすでに持っていない場合にのみ、この要素に結合し、言うことができますか?それは可能ですか?

おかげ

答えて

0

私はより良い方法があると思いますが、結合重複イベントを避けるために、あなたはイベントをバインド解除できます。これにはevent namespacesを使用できます。そして、この場合、すべての要素をループする必要はありません。

return this.unbind('.btar') 
      .bind('scroll.btar keyup.btar', function() { 
       resizeTextArea($(this)); 
      }); 
+0

ありがとうございますが、それはバインド、バインド解除、繰り返します。私のライブはクリックに焦点を当てています...プラグインではどうすればそれがすでにバインドされているかどうかを確認できますか? – TheExit

+0

@TheExit:True。私が言ったように、私はあなたの特定の状況のた​​めのより良い方法があると思う...そして、私はあなたがそれをテストすることはできないと思う。 'unbind'、' bind'の例は、Ajax呼び出しの後にイベントハンドラを追加する処理の例として、イベント名前空間ページで与えられています。別の方法があれば、それを使うだろう。 –