我对 jQuery 的 .filter 方法有疑问。我的代码如下(大量剥离了不相关的位)。
(function($) {
$.ticker = function( el, options ) {
// to avoid scope issues, use 'base' instead of 'this'
var o, base = this;
base.el = el;
base.$el = $(el);
base.init = function() {
base.options = o = $.extend( {}, $.ticker.defaultOptions, options );
base.$items = base.$el.find(' ul > li');
base.timer = null;
base.startTimer();
}
base.animate = function( ) {
base.$items.filter(':eq(0)').appendTo(base.$el.find('ul'));
}
// initialise the object
base.init();
};
$.ticker.defaultOptions = {
delay: 2000,
transitionSpeed: 700
}
$.fn.ticker = function(options) {
return this.each(function() {
(new $.ticker(this, options))
})
}
})(jQuery);
我希望这样做,每 2 秒,“base.animate”函数会将第一个 LI 项目从 UL 标签的顶部移动到底部。这是第一次工作,但对于后续迭代,最后一个LI 项目(曾经是第一个)被移动到 UL 标记的末尾。似乎.filter(':eq(0)')一直在引用曾经是第一项的内容,而不是引用“当前”的第一个 LI 项。
我怎样才能解决这个问题?
谢谢