jQuery插件制作 一个页面多次调用

发布于 2022-09-05 02:41:52 字数 1927 浏览 35 评论 0

我想写个轮播图插件,我页面上调用了两次..... 每一个传进去三张图片,但是我循环出来添加到页面上的时候 发现有6个li我现在想要的效果就是 我循环一次给我第一个添加3个li 第二次给第二个添加相对应的li 希望路过的大牛给指点下....

$(".xxx_carousel").xxx_carousel({
    $picObj: {
        "1": "showImgItem",
        "2": "showImgItem cyan",
        "3": "showImgItem red"
    }
});

$(".xxx_carousel").xxx_carousel({
    indicatorLeftText: '左',
    indicatorRightText: '右',
    $picObj: {
        "4": "showImgItem",
        "5": "showImgItem cyan",
        "6": "showImgItem red"
    }
});


(function($, window, document, undefined) {
    var defaults = {
        navEvents: 'click',
        indicatorEvents: 'click',
        indicator: true,
        indicatorLeftText: 'left',
        indicatorRightText: 'right',
        animateSpeed: 800,
        $picObj: {},
        $cb: null
    };

    var xxx_carousel = function(ele, ops) {
        this.$ele = ele;
        this.settings = $.extend({}, defaults, ops);
        var _this = this;
        this.initaddElem();
    }

    xxx_carousel.prototype = {
        initaddElem: function(){
            var $picTemplate = '',
                $carouselPicWarp = $(".xxx_carousel_pic_warp"),
                _this = this;
                // --> 这个地方会循环两次 我页面调用的时候传了两个$picObj
                // --> 但是我发现循环时候它是直接在每个$(".xxx_carousel_pic_warp")下面添加了六个li 我现在想要的效果就是循环第一次 给我的第一个这个类名的加三个li,
                // --> 循环第二次的时候给我第二个类名的加三个li 而不是一次添加6个.... 这个该是怎么解决的呢??
                $.each(this.settings.$picObj, function(i, val) {
                    $picTemplate += '<li class="xxx_carousel_warp_item"><a class="' + val + '" href="javascript:;">' + i + '</a></li>'
                })
                $carouselPicWarp.append($picTemplate)
        }

    }

    $.fn.xxx_carousel = function(opts) {
        var xxxCarousel = new xxx_carousel(this, opts);
        return xxxCarousel;
    }
})(jQuery, window, document);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

难理解 2022-09-12 02:41:52

你的两个元素,类名都是.xxx_carousel,所以当你给$(".xxx_carousel")绑定的时候,都会同时绑定两个,正确的做法是:第一次只选中第一个绑定,第二次选中第二个绑定,就可以了。

$(".xxx_carousel:eq(1)").xxx_carousel({ // 注意:eq(1),也可以用jQuery的.eq(1)或者first()
    $picObj: {
        "1": "showImgItem",
        "2": "showImgItem cyan",
        "3": "showImgItem red"
    }
});

$(".xxx_carousel:eq(2)").xxx_carousel({ // 注意:eq(2),也可以用jQuery的.eq(2),由于总共只有两个,也可以用jQuery的.last()
    indicatorLeftText: '左',
    indicatorRightText: '右',
    $picObj: {
        "4": "showImgItem",
        "5": "showImgItem cyan",
        "6": "showImgItem red"
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文