я тоже нашел, что jCarousel возвращает непригодный .Первый,. last, .prevFirst и .prevLast свойства в то время, когда они вам нужны.
Следовательно, я должен был сделать это грязным способом и решил написать функцию, которая возвращает идентификатор того, какой тег li в настоящий момент является первым в контейнере, путем чтения, является ли его смещение слева выше нуля. Если это так, и это первый, у которого есть левая позиция выше нуля, это мой текущий слайд.
В следующем коде предполагается, что вы положили id = "listitem-N" в теги списка в вашем цикле foreach(), где N - текущая итерация.
var currSlide = 0;
function getCurrentCarouselItem(){
$("ul#use-cases li.use-case").each(function(){
var leftPos = $(this).offset().left;
if(leftPos >= 0){
var id = $(this).attr('id').split("-");
currSlide = id[1];
return false;
}
});
return currSlide;
}
Причина не возвращать идентификатор в каждом(), потому что каждый() является функцией и возвращение будет возвращать только для этой функции, а не getCurrentCarouselItem().
Я думал, что сначала, но первым и последним не работает, когда видно больше одного изображения, так как первое видимое изображение и последнее видимое изображение не всегда являются текущим изображением ... – Steerpike
Жаль, что я не полностью понимая, что вы говорите? Используя простой пример jcarousel, который использует три изображения и прокручивает по горизонтали, carousel.first вернет самый левый элемент, а carousel.last вернет самый правый элемент. При каждом нажатии левой и правой стрелок для выполнения следующей и предыдущей операций событие itemLoadCallback запускается, передавая данные карусели, позволяя вам проверять первый и последний элементы. И какой бы вы ни считали текущей, которую вы можете отобразить, если вы считаете середину текущей, используйте ее для определения среднего индекса. – HenryRat
Спасибо, это очень помогло. –