単一の画像を取得し、特定の幅を適用する次のコードがあります。
function Foo ( img ) {
this.image = img;
}
Foo.prototype._getWidth = function( ) {
return this.image.data('largest') + 'px';
};
Foo.prototype.applyWidth = function( ) {
this.image.css( 'width', this._getWidth() );
};
var img = Foo( $('img') );
img.applyWidth();
$('img')
ただし、 for ループがない場合や各関数内など、画像の jQuery コレクションの処理に頭を悩ませて$.each()
います (上記の 2 つの関数よりも多くの関数があります)。
これまでのところ、私が思いついた最高のものは次のとおりです。
var temp = [];
function Create ( imgs ) {
$.each( imgs, function( i ){
temp[ i ] = new Foo ( $( this ) );
});
return temp;
}
Create( $('img') );
$.each( temp, function() {
$(this).applyWidth();
}):
これは問題なく機能しますが、まとまりがなく、ずさんな感じがします。
最後に、以下についてご指導をお願いします。
理想的には、これを namespace の下に置きます
Theme
。Theme.Images
モジュールパターンを使用してこのメソッドを使用したいと思います。これは可能ですか?名前空間の下で、内のすべての画像を呼び出す
Theme.Images
ような呼び出しを行うことが可能である場合、それぞれが に対して一意の値を持つことを念頭に置いてください。現時点では、ループしてループ内で呼び出す必要があると思います。Theme.Images.applyWidth()
applyWidth()
temp
img
_getWidth()
Theme.Images.temp
applyWidth()
私は本当に JavaScript の継承のポイントを理解し始めており、それを続けたいと思っています。