プラグインの範囲外に足を踏み入れているので、jCarouselがそれ自体を更新することを知らないことを除いて、あなたは例が理にかなっています。ドキュメントから、あなたが言及したremove()メソッドが機能するようです。ただし、私の試行では、jCarouselオブジェクトに実際に「正しいことを実行」させ、ボタンを更新したり、スクロールしたりすることはできませんでした。
そのため、jCarouselクラスにそれを正確に実行する追加のメソッドを作成しました。removeAndAnimate(1)を呼び出して、カルーセルの最初のアイテムを削除し、すべてを再構築して、[次へ]/[前へ]ボタンを有効/無効にします。
また、jCarouselが提供するremove()関数は、現在表示されているアイテムを削除できないようにします。これはまさに私たちが望んでいたことです(たとえば、ユーザーがカルーセルをクリックして画像を削除できるようにします)。 。
removeAndAnimate(i)の実装:
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();
}
これは、remove()実装の直後に配置することをお勧めします。コールバック関数の外部で、jQueryを使用してjCarouselインスタンス自体にアクセスするには:
var carousel = $("#mycarousel").data("jcarousel");
carousel.removeAndAnimate(1);
それはうまくいくはずです!