私はこのようなjavascriptクラスを持っています(技術的にはクラスではないことを知っています)。
function StackMedia (container) {
this.container = container;
this.items = container.find('.stackItem');
console.log("this.items.length: "+this.items.length);
}
cssクラスstackItemを持つ他のdivを保持するコンテナ(div)を渡します。これらは、アイテムに格納されます。
ここで私はそれを再利用したい:
StackMedia.prototype.updatePositions = function() {
for (var i = 0; i < this.items.length; i++) {
this.items[i].css('left', 50);
}
}
問題は、それがjqueryオブジェクトではなくなったため、次のエラーが発生することです。
TypeError:'undefined'は関数ではありません('this.items [i] .css(' left'、50)'を評価しています)
それらをjqueryオブジェクトとして保存するにはどうすればよいですか?
アップデート
ここでクラスを作成します(正常に動作します):
// create a stack by passing a container
$('.stackContainer').each(function(containerIndex) {
$(this).css('z-index', containerIndex);
stacks.push(new StackMedia($(this)));
});
これは最後の行を除けばほとんど問題ありません
StackMedia.prototype.updatePositions = function() {
var sm = this; // StackMedia
// set the css properties of the items
this.items.each(function(i){
$(this).css('left', sm.x + i * sm.overlapX);
$(this).css('top', sm.y + i * sm.overlapY);
$(this).css('width', sm.itemWidth);
$(this).css('height', sm.itemHeight);
$(this).find('img').css('width', sm.itemWidth);
$(this).find('img').css('height', sm.itemHeight);
});
// set the css properties of the container
//console.log(sm);
console.log($(this));
$(this).container.css('width', 400);
};
私はこれを再び取得します:TypeError:'undefined'はオブジェクトではありません('$(this).container.css'を評価しています)
jquery$(this).container
機能が失われましたが、どうすれば元に戻すことができますか?