javascript - 在一页上制作多个 slider /轮播

标签 javascript jquery html css slider

我正在使用带有“企业”模板的“Datalife 引擎”CMS。有一个 slider ,它像这样添加到页面上

<div id="slider-wrapper">
<div class="slider">
    <div class="slide" style="background-image: url(/uploads/fotos/lager.jpg);">
        <div class="cnt">
            <div class="slide-text">
                <h2>Duis felis tortor, consequat</h2>
                <p>Duis felis tortor, consequat In sed elementum risus. Phasellus venenatis hendrerit pharetra. Suspendisse ultricies malesuada metus, non placerat lectus pellentesque at. Vivamus ut molestie lorem, non bibendum neque. Nam sagittis luctus egestas. Donec libero turpis, faucibus vitae iaculis vel, mattis at tortor.</p>
            </div>
        </div>
    </div>
    <div class="slide" style="background-image: url(/uploads/fotos/day_lager.jpg);">
        <div class="cnt">
            <div class="slide-text right-text">
                <h2>Phasellus venenatis hendrerit pharetra</h2>
                <p>Duis felis tortor, consequat In sed elementum risus. Phasellus venenatis hendrerit pharetra. Suspendisse ultricies malesuada metus, non placerat lectus pellentesque at. Vivamus ut molestie lorem, non bibendum neque. Nam sagittis luctus egestas. Donec libero turpis, faucibus vitae iaculis vel, mattis at tortor.</p>
            </div>
        </div>
    </div>
</div>
<span class="slider-button slider-button-prev"><i class="fa fa-angle-left"></i></span>
<span class="slider-button slider-button-next"><i class="fa fa-angle-right"></i></span>

slider 使用这个 JS 运行(我认为)

$(".slider").aSlider({
    prevBtn: '.slider-button-prev',
    nextBtn: '.slider-button-next',
    fadeSpeed: 500, // скорость затухания/появления слайда
    autoPlay: true, // автоперелистывание слайдов (true/false)
    autoPlayDelay: 5000, // время показа в слайдах в миллисекундах
    slideDelay: 500
});

这是一个 slider 函数

/* jQuery aSlider v1.2 */
;
! function (e) {
    jQuery.fn.aSlider = function (a) {
        var a = e.extend({
                nextBtn: ".aSliderNext",
                prevBtn: ".aSliderPrev",
                fadeSpeed: 300,
                autoPlay: !1,
                autoPlayDelay: 3e3,
                slideDelay: 0
            }, a),
            d = function () {
                function d() {
                    e(a.nextBtn).click(), r = setTimeout(d, a.autoPlayDelay)
                }
                var t = e(this),
                    n = t.children(".slide:first-child"),
                    l = t.children(".slide:last-child"),
                    i = n.index(),
                    f = l.index(),
                    u = n;
                if (t.css("overflow", "hidden"), t.find(".slide").fadeOut(0), n.fadeIn(0), e(a.nextBtn).click(function (e) {
                        return e.preventDefault(), u.index() != f ? (u.fadeOut(a.fadeSpeed), u = u.next().delay(a.slideDelay).fadeIn(a.fadeSpeed)) : (u.fadeOut(a.fadeSpeed), n.delay(a.slideDelay).fadeIn(a.fadeSpeed), u = n), !1
                    }), e(a.prevBtn).click(function (e) {
                        return e.preventDefault(), u.index() != i ? (u.fadeOut(a.fadeSpeed), u = u.prev().delay(a.slideDelay).fadeIn(a.fadeSpeed)) : (u.fadeOut(a.fadeSpeed), l.delay(a.slideDelay).fadeIn(a.fadeSpeed), u = l), !1
                    }), a.autoPlay) {
                    var r = setTimeout(d, a.autoPlayDelay);
                    t.parent().hover(function () {
                        clearTimeout(r)
                    }, function () {
                        r = setTimeout(d, a.autoPlayDelay)
                    })
                }
            };
        return this.each(d)
    }
}(jQuery);

// SmoothScroll for websites v1.2.1
// Licensed under the terms of the MIT license.
// People involved
//  - Balazs Galambosi (maintainer)  
//  - Michael Herf     (Pulse Algorithm)
;

我的问题是 - 如何在一页上添加多个(恰好 4 个) slider ?因为,如果我只是克隆 html 代码,所有 slider 都会同时调用该函数并且刷新会循环。试图用其他变量克隆函数,但失败了。请帮忙。

最佳答案

您需要在实例化时将每个实例放入一个数组中,然后您可以通过其数组位置独立引用每个实例。 IE。

 var sliderArr = [];

 var _slider = $(".slider").aSlider({
     prevBtn: '.slider-button-prev',
     nextBtn: '.slider-button-next',
     fadeSpeed: 500, // скорость затухания/появления слайда
     autoPlay: true, // автоперелистывание слайдов (true/false)
     autoPlayDelay: 5000, // время показа в слайдах в миллисекундах
     slideDelay: 500
 });

sliderArr.push(_slider);

然后访问该实例的方法和属性:

sliderArr[0].yourMethod();

如果您有第二个实例,您将以相同的方式访问它:

即。

 sliderArr[1].yourMethod();

关于javascript - 在一页上制作多个 slider /轮播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912190/

相关文章:

javascript - 使汉堡菜单淡出工作

javascript - 比较 jQuery 中对象的 InnerHTML

javascript - 让 src 属性使用与页面相同的协议(protocol)

javascript - 无法获得正确的正则表达式

javascript - 文本区域和选择器选项未发送到电子邮件

javascript - CANVAS 绘图和 toDataURL()

javascript - For循环/开关优化

javascript - 像 p5.js 这样的 vanilla javascript 中是否有映射函数?

javascript - jQuery 验证不适用于该表单

jquery - 如何在 animate 方法的回调中更改图像的 "src"属性?