我正在爲我的網站編寫簡單的滑塊。該滑塊包含列表項目。我想使用OOP方法。類中的JavaScript/jQuery變量範圍(this)
我的實際代碼:
var miniSlider = function(objId)
{
this.obj = $("#" + objId);
this.obj.settings = [];
this.obj.settings['items'] = $('ul li', this.obj).length;
this.pagerNext = this.obj.find("i.next");
this.pagerPrev = this.obj.find("i.prev");
this.pagerNext.on("click", function() {
alert(this.obj.settings['items']);
});
};
我可以調用其他幾個滑塊(是的,這就是爲什麼我介紹了一個類):
miniSlider("mini-slider");
的問題是,當我在jQuery的this.pagerNext.on(「click」,function(){}); 這個不再是我的對象,而是 - 它成爲一個點擊元素。點擊完成的方式(並支持多滑塊)後,如何訪問this.obj.settings?
編輯:
這裏是與SOF社區:)
var MiniSlider = function(objId)
{
this.obj = $("#" + objId);
this.obj.settings = {
items: $("ul li", this.obj).length,
autoChangeTime: 8000
};
this.obj.activeElement = null;
this.pagerNext = this.obj.find("i.next");
this.pagerPrev = this.obj.find("i.prev");
var self = this;
this.pagerNext.on("click", function() {
self.obj.activeElement = $('li.active', self.obj);
if(self.obj.settings.items > 0)
{
if(self.obj.activeElement.is(':last-child'))
{
$('li.active', self.obj).removeClass('active');
$('li', self.obj).first().addClass('active');
}
else
{
self.obj.activeElement.next().addClass('active').prev().removeClass('active');
}
}
});
this.pagerPrev.on("click", function()
{
self.obj.activeElement = $('li.active', self.obj);
if(self.obj.settings.items > 0)
{
if(self.obj.activeElement.is(':first-child'))
{
self.obj.activeElement.removeClass('active');
$('li', self.obj).last().addClass('active');
}
else
{
self.obj.activeElement.prev().addClass('active').next().removeClass('active');
}
}
});
this.obj.parent().on('mouseenter mouseleave', function(e) {
if (e.type == 'mouseenter')
{
$(this).addClass('stop');
}
else
{
$(this).removeClass('stop');
}
});
setInterval(function() {
if(self.obj.settings.items > 0 && !self.obj.parent().hasClass("stop"))
{
self.pagerNext.click();
}
}, this.obj.settings.autoChangeTime);
};
,並調用了合作創造了一個全碼:
new MiniSlider("mini-slider");
與您的問題沒有直接關係,但是如果您打算實例化多個這些傢伙,您應該使用'new'關鍵字,如在新的MiniSlider(「mini-slider1」)中;此外,如果您使用它,請使用m大寫字母來指示此函數應該用作構造函數。 – Hoffmann