【问题标题】:Owl Carousel 2 remove specific itemOwl Carousel 2 移除特定项目
【发布时间】:2020-06-21 15:16:26
【问题描述】:

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

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

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

第二次点击image4.jpg,传递给“remove_image”的索引是3。这个索引是错误的。这是因为 Owl Carousel 2 在 image2 被移除后更新了。 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');
}

【问题讨论】:

    标签: javascript jquery owl-carousel owl-carousel-2


    【解决方案1】:

    您在调用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 carousel 时添加的几个元素中的一部分。 .owl-stage 位于用户提供的容器和项目之间,包装这些项目。 .owl-item 包装每个项目并且是 .owl-stage 的子项。

    参考资料:

    【讨论】:

    • 我试过你的方法。但是,对于我点击的图像,我总是得到 -1 的索引。
    • @JK 我忽略了猫头鹰轮播对用户提供的轮播所做的修改。这已得到纠正。
    • 此方法有效,但不幸的是对于dots = true,如果删除某些项目,则不会更新点
    • @AlauddinAfifCassandra 因为这是猫头鹰轮播的错误,应该在Owl Carousel's issue tracker上报告。
    • @Ouroborus 感谢兄弟提供上面的代码。现在当我添加 .owlCarousel('refresh') 时它正在工作
    猜你喜欢
    • 2017-07-02
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    相关资源
    最近更新 更多