Slick Slider 不适用于 Shopifyawn 的产品推荐部分

问题描述 投票:0回答:2

我正在尝试在产品推荐部分显示 6 个产品,并且我想在滑块中显示它们。我使用 slick slider 创建所有滑块,但此时它不起作用,slick slider 未初始化,并且我的 slick 代码很完美,会出现什么问题?这是我的代码..

光滑的js👇🏻

$(".product_recommendation_slick").not(".slick-initialized").slick({
    infinite: true,
    slidesToShow: 3,
    slidesToScroll: 1,
    arrows: true,
    prevArrow:
        "<div class='slick-prev'><i class='fas fa-angle-left'></i></div>",
    nextArrow:
        "<div class='slick-next'><i class='fas fa-angle-right'></i></div>",
    autoplay: false,
    responsive: [
        {
            breakpoint: 768,
            settings: {
                slidesToShow: 2,
                slidesToScroll: 1,
            }
        },
        {
            breakpoint: 420,
            settings: {
                slidesToShow: 1
            }
        }
    ],
});

产品推荐.液体👇🏻

<div class="row product_recommendation_slick">
   {% for recommendation in recommendations.products %}
      {% render 'product-card',
         product_card_product: recommendation
      %}
   {% endfor %}
</div>
javascript jquery shopify liquid slick.js
2个回答
1
投票

您的代码可能无法正常工作,因为当您查找 DOM 元素时尚未创建它们。使用窗口完全加载窗口后运行代码:

加载整个页面(包括所有依赖的页面)时触发 样式表、脚本、iframe 和图像等资源。

// vanilla JS
window.addEventListener("load", (event) => {});
window.onload = (event) => {};

// JQuery
$(window).on('load', function() { })

页面 DOM 加载完成后立即触发,无需等待 资源加载完毕

// vanilla JS
window.addEventListener('DOMContentLoaded', (event) => {});
window.onDOMContentLoaded = (event) => { };

// JQuery    
$(window).on('ready', function() { })

0
投票

您可以使用下面的代码 setTimeout 函数帮助在 3 秒后调用 slick 函数

$(document).ready(function () {
    setTimeout(function () {

$(".product_recommendation_slick").not(".slick-initialized").slick({
    infinite: true,
    slidesToShow: 3,
    slidesToScroll: 1,
    arrows: true,
    prevArrow:
        "<div class='slick-prev'><i class='fas fa-angle-left'></i></div>",
    nextArrow:
        "<div class='slick-next'><i class='fas fa-angle-right'></i></div>",
    autoplay: false,
    responsive: [
        {
            breakpoint: 768,
            settings: {
                slidesToShow: 2,
                slidesToScroll: 1,
            }
        },
        {
            breakpoint: 420,
            settings: {
                slidesToShow: 1
            }
        }
    ],
});
}, 3000); // Change the delay time (in milliseconds) as needed
});
© www.soinside.com 2019 - 2024. All rights reserved.