我遇到了jQuery的.filter方法的問題。我的代碼如下(嚴重剝離不相關的位)。jQuery「過濾器」沒有更新後刪除項目
(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項。
我該如何解決這個問題?
感謝
你只是傳遞相同的集合,所以除非你再次從DOM獲取元素,你怎麼能期望同樣的舊元素集合進行更新。 – adeneo