Owl 轮播 2 删除特定项目

Owl Carousel 2 remove specific item

我使用 Owl Carousel 2,我的 HTML 代码如下。每张图片的右上角都会有一个小“x”图标,点击后我希望将图片从轮播中移除。

第一次点击时效果很好,因为传递给“remove_image”函数的索引是正确的。但是第二次点击另一张图片时,索引将不再正确。

例如: 第一次点击 image2.jpg,传递给“remove_image”的索引是 1,这是正确的。图片已从 Owl 轮播 2.

中正确删除

第二次点击 image4.jpg,传递给“remove_image”的索引是 3。这个索引是错误的。这是因为 Owl 删除 image2 后 Carousel 2 已更新。 image4.jpg 的正确索引现在是 2。

我该如何解决这个问题?请帮忙。谢谢

<div class="owl-carousel owl-theme">
    <div class="item"><img src="/image1.jpg" /><a onclick="remove_image(0);"><i class="icon-remove"></i></a></div>
    <div class="item"><img src="/image2.jpg" /><a onclick="remove_image(1);"><i class="icon-remove"></i></a></div>
    <div class="item"><img src="/image3.jpg" /><a onclick="remove_image(2);"><i class="icon-remove"></i></a></div>
    <div class="item"><img src="/image4.jpg" /><a onclick="remove_image(3);"><i class="icon-remove"></i></a></div>
    <div class="item"><img src="/image5.jpg" /><a onclick="remove_image(4);"><i class="icon-remove"></i></a></div>
    <div class="item"><img src="/image6.jpg" /><a onclick="remove_image(5);"><i class="icon-remove"></i></a></div>
</div>
function remove_image(index) {
    $('.owl-carousel').owlCarousel('remove', index).owlCarousel('update');
}

您在对 remove_image 的调用中使用了固定索引。由于这些在删除项目时不会更新,因此这些固定索引变得不准确。

一个快速(但不一定是最好的)修复方法是使用 this,而不是固定索引,来传入锚元素本身,然后让您的函数从中导出目标索引:

<div class="owl-carousel owl-theme">
    <div class="item"><img src="/image1.jpg" /><a onclick="remove_image(this);"><i class="icon-remove"></i></a></div>
    <!-- more slides -->
</div>
function remove_image(trigger) {
    var $item = $(trigger).closest('.owl-item');
    var index = $item.closest('.owl-stage').children().index($item);
    $item.closest('.owl-carousel').owlCarousel('remove', index).owlCarousel('update');
}

.owl-stage.owl-item 是初始化 owl 轮播时添加的几个元素中的一部分。 .owl-stage 位于用户提供的容器和项目之间,包装这些项目。 .owl-item 包装每个项目并且是 .owl-stage.

的子项

参考文献: