如何获取 OwlCarousel2 中上一项和下一项的索引?

How can I get the index of prev and next item in OwlCarousel2?

如何获取OwlCarousel 中下一个和上一个项目的索引,以便为下一个和上一个按钮设置背景图像?我制作了旋转木马的基本变体。

$('.cat-slides').owlCarousel({
    items: 1,
    center: true,
    loop: true,
    autoWidth:true,
});

我需要获取上一个和下一个的索引,以便将 img 设置为上一个和下一个按钮的背景。

尝试以下代码获取索引,

var owl = $('.cat-slides');
owl.owlCarousel();
owl.on('changed.owl.carousel', function (e) {
      var currentindex = e.item.index;
      return currentindex;
});

首先,有必要了解此旋转木马库会生成 "clones" 的幻灯片,将一半克隆放在幻灯片之前,其余克隆放在幻灯片之后。这是包含 12 个项目的示例:

因此,要获得与活动项目相关的按钮的正确索引,您需要从活动项目的索引中减去一半的克隆数。以下是您的操作方式:

$(".cat-slides").on('changed.owl.carousel', function() {
    // get the index of the active item
    const activeItem = document.querySelector('.owl-carousel.cat-slides .active');
    const allItems = Array.from(activeItem.parentNode.children);
    const index = allItems.indexOf(activeItem);

    // count the clones
    const cloneCount = activeItem.parentNode.querySelectorAll('.cloned').length;

    // take the previous/next item's index, then subtract half the clones from it
    const prevButtonIndex = index - 1 - cloneCount / 2;
    const nextButtonIndex = index + 1 - cloneCount / 2;

    // get references to the next and previous button elements
    const allButtons = document.querySelectorAll('.owl-dot');
    const nextButton = allButtons[nextButtonIndex];
    const prevButton = allButtons[prevButtonIndex];

    // example of how you'd change the background image of each button
    if (nextButton) nextButton.style.backgroundImage = "path/to/next/image";
    if (prevButton) prevButton.style.backgroundImage = "path/to/prev/image";
});

您缺少的下一点是如何获取 previous/next 图像,但我只是回答您提出的问题。如果有任何不清楚的地方,请告诉我。