你的例子是有道理的,除非你超出了插件的範圍,jCarousel不知道自己要更新。從文檔看來,您提到的remove()方法似乎可行。然而,我的試驗,我永遠不可能得到的jCarousel對象實際上「做正確的事情」,並更新它的按鈕,滾動等。
因爲這一切,我寫了一個額外的方法在jCarousel類確切的說。您可以調用removeAndAnimate(1)移除傳送帶中的第一個項目並重建所有內容,以便下一個/上一個按鈕被啓用/禁用。
另外值得注意的是,jCarousel提供的remove()函數可以防止您刪除當前正在顯示的項目,這正是我們想要做的事情(允許用戶通過單擊它來從旋轉木馬中刪除圖像, 例如)。
爲removeAndAnimate(一)履行:
removeAndAnimate: function(i) {
var e = this.get(i);
var d = this.dimension(e);
if (i < this.first) this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');
e.remove();
this.options.size--;
var di = this.options.visible != null ? Math.ceil(this.clipping()/this.options.visible) : null;
var li = this.list.children('li');
var self = this;
if (li.size() > 0) {
var wh = 0, i = this.options.offset;
li.each(function() {
self.format(this, i++);
wh += self.dimension(this, di);
});
this.list.css(this.wh, wh + 'px');
}
this.scroll(0,true);
this.buttons();
}
我建議刪除()實施後直接把這個。使用jQuery訪問jCarousel實例本身,在回調函數之外:
var carousel = $("#mycarousel").data("jcarousel");
carousel.removeAndAnimate(1);
這應該工作!
這很好。我最終選擇了一個不同的插件。 – 2011-01-18 05:53:29