搜索

首页  >  问答  >  正文

使用 ajax 将幻灯片添加到 Slick

因此,我使用 Slick Carousel,并在其中显示数据库中的产品列表,出于性能原因,该列表限制为 24 个。但我需要显示所有这些,所以我创建了一个 afterChange 函数,每次用户在结束前有 2 张幻灯片时,ajax 都会加载另外 24 个产品,并使用 slickAdd 函数将它们添加到 Slick 的末尾。

一切工作正常,但是当 slickAdd 函数执行时,幻灯片宽度由于某种原因从 457px 更改为 451px,我可以在当前幻灯片上看到第四张幻灯片的一部分。(我显示了 3 张)然后如果我单击再次点击下一个按钮,宽度回到 457px,一切正常。

$('.demo').slick({
        slidesToShow: 3,
        slidesToScroll: 3,
        infinite: false,
    });

    $('.demo').on('afterChange', function(event, slick, currentSlide, nextSlide){

        var komponent = $(".komponent-container.active").attr("id");

        var loadWhen = currentSlide+6;

        if(loadWhen == slick.slideCount){
            console.log("loadmore");
            $.ajax({
                type: "POST",
                url: "/project/public/konfigurator",
                data: {id: komponent, from_column: slick.slideCount, requestid: "load_more"},
                dataType: "json",

                success: function (data) {

                    var data_parser = JSON.parse(data)[0];

                    if (data_parser.length > 0) {

                        var html = '';
                        for (i = 0; i < data_parser.length; i++) {
                            var produkt_nazov = 0;
                            if (data_parser[i].produkt.length > 45) {
                                produkt_nazov = data_parser[i].produkt.substring(0, 45) + "...";
                            } else {
                                produkt_nazov = data_parser[i].produkt;
                            }

                            html += '<div><div class="item-container"><div class="container-wrapper"><div class="produkt-container"><div class="item-left"><div class="item-image-wrapper"><img draggable="false" id="produkt-img" src="img/konfigurator/'+komponent+'/' + data_parser[i].produkt + '/1.jpg" alt="" /></div><div class="cena">' + data_parser[i].cena + ' €</div></div><div class="item-right"><div class="item-info"><span class="item-title">' + produkt_nazov + '</span><span class="item-description"><span>Výrobca čipu - ' + data_parser[i].vyrobca_cipu + '</span><span>Veľkosť pamäte - ' + data_parser[i].vram_size + '</span><span>Typ pamäte - ' + data_parser[i].vram_type + '</span><span>Frekvencia jadra - ' + data_parser[i].gpu_memory_clockrate + '</span></span></div><div class="spodna-cast"><div class="action-buttons"><a class="detail-button">Detail</a><a class="add-button">Vybrať</a></div></div></div></div></div></div></div>';
                        }

                        $(".demo").slick('slickAdd', html);
                        console.log("add");
                    }
                },

                error: function (result) {
                    alert('error');
                }
            });
        }
    });
});

什么可能导致这种情况以及如何预防?

P粉937769356P粉937769356276 天前342

全部回复(1)我来回复

  • P粉939473759

    P粉9394737592024-02-27 00:15:00

    这为我解决了这个问题

    $(".demo")[0].slick.setPosition();

    回复
    0
  • 取消回复