2011-12-15 8 views
2

が、私は基本的なプラグイン書く方法を教えてjQueryプラグインサイト、チェック:jQueryプラグイン関数をいくつかの要素だけに制限する方法は?

var tallest = $('div').maxHeight(); // Returns the height of the tallest div 

しかし、私は希望:次に

(function($){ 
    $.fn.maxHeight = function() { 
    var max = 0; 
    this.each(function() { 
     max = Math.max(max, $(this).height()); 
    }); 
    return max; 
    }; 
})(jQuery); 

を、divがこのように、maxHeightメソッドを持つことができますテキストエリアだけにmaxHeight関数はありますが、divはありません。どうすればいいですか?

+0

divで使用しようとするとどうなりますか? –

+0

何も起こらない。 – DNB5brims

答えて

0

高さを確認/保存する前に、エレメントがテキストエリアであることを確認してください。

this.each(function() { 
    if(this.tagName.toLowerCase() === "textarea") { 
     max = Math.max(max, $(this).height()); 
    } 
}); 

jQueryのプラグインは、特定の要素に機能を与えていない、彼らは、選択された要素のセットを操作するためのjQueryオブジェクトに機能を与えます。最良の解決策は、できるだけ包括的に保ち、必要なときに$("textarea").maxHeight()に電話することです。プラグインの中でtextareaに固有の何もしていないので、今のままにしておけば、$('div').maxHeight()が必要なユースケースになったら、将来変更する必要はありません。

+0

'is( 'textarea')'を使うことができます。 – alex

+0

これは同じことですが、シズルパーサーのオーバーヘッドはありません。 – Dennis

1

あなたが返されたセットにeach()を行う場合は、それが唯一の選択textareaの要素を反復します...

this.filter('textarea') 

を行うことができます。

関連する問題