我有以下代碼jQuery插件變量
(function($) { // carousel var Carousel = { settings: { itemsPerPage: 1, itemsPerTransition: 1, noOfRows: 1, pagination: true, nextPrevLinks: true, speed: 'normal', easing: 'swing', loop: false, auto: true, autoTime: 4000, maxHeight: 300, maxWidth: 500 }, init: function(el, options) { if (!el.length) { return false; } this.options = $.extend({}, this.settings, options); this.container = el; this.panelHeight = 0; this.panelWidth = 0; this.numPanels = 0; // Find biggest panel in set this.container.find(".tinycarousel > li > div").each(function() { if($(this).outerHeight() > this.panelHeight) { this.panelHeight = $(this).outerHeight(); } if($(this).outerWidth() > this.panelWidth) { this.panelWidth = $(this).outerWidth(); } this.numPanels++; }); alert(this.numPanels); }, autoSwitch: function() { this.container.find(".tinycarousel").animate({marginLeft: -panelWidth}); } }; // bridge $.fn.tinycarousel = function(options) { return this.each(function() { var obj = Object.create(Carousel); obj.init($(this), options); $.data(this, 'carousel', obj); }); }; })(jQuery);
我在這裏的問題是,this.numPanels
給出0的結果(和我知道應該是3)。它在我使用this.
之前有效,並且只有numPanels
作爲一個普通變量,但現在它不是。對不起,我無法提供更多信息,但我的問題是:我如何在jQuery插件'可編輯'內部創建變量。
編輯 我對任何混淆道歉 - 我只是不想發佈愚蠢的代碼,並使其不可讀。請看我上面的完整代碼。
EDIT 2我感覺像吸了pillock ......看看在autoSwitch
功能 - 這是我得到一個錯誤:panelWidth is not defined
這就是爲什麼我試圖使用this.
我對此感到抱歉 - 請參閱我的OP瞭解整個代碼。我應該已經更清楚了。 – Bojangles 2011-03-09 20:46:36
更多編輯:-(對不起! – Bojangles 2011-03-09 20:52:19
@JamWaffles - 查看編輯 – 2011-03-09 21:08:54