Ваш пример имеет смысл, за исключением того, что вы выходите за пределы плагина, jCarousel не знает, что нужно обновлять себя. Из документации кажется, что упомянутый вами метод remove () будет работать. Однако в моих испытаниях я так и не смог заставить объект jCarousel на самом деле «делать правильные вещи» и обновлять его кнопки, прокручивать и т. Д.
Из-за всего этого я написал дополнительный метод в классе jCarousel, который делает именно это. Вы вызываете removeAndAnimate (1), чтобы удалить первый элемент в карусели и перестроить все так, чтобы кнопки «следующий / предыдущий» были включены / отключены, все работает.
Также стоит отметить, что функция remove () jCarousel не позволяет вам удалить элемент, который отображается в данный момент, что мы и хотели сделать (например, позволить пользователю удалить изображение из карусели, щелкнув по нему). .
Реализация 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 (). Чтобы получить доступ к самому экземпляру jCarousel с помощью jQuery, вне функций обратного вызова:
var carousel = $("#mycarousel").data("jcarousel");
carousel.removeAndAnimate(1);
Это должно сработать!
person
Macfanatic
schedule
19.05.2010