• 封装自己的jquery插件


    自己尝试封装的一个在工作当中使用的多级弹窗插件:

    ;(function ($, window, document) { //用一个自调用匿名函数把插架代码包裹起来,防止代码污染
        $.fn.multi = function (options, callback) {
            let defaults = {  //defaults 使我们设置的默认参数。
                trigger: '', //触发事件的class
                popClass1: '', //第一个弹窗的class
                popClass2: '', //第二个弹窗的class
            };
            options = $.extend(defaults, options); //将传入参数和默认参数合并
            let $this = $(this); //响应事件对象
    
            //触发弹窗
            $this.on('click', options.trigger, function () {   //功能代码部分,绑定事件
                //关闭页面上的弹窗
                $(options.popClass1).parent().hide();
                $(options.popClass2).parent().hide();
                //打开新触发的弹窗
                $(this).next().show();
            });
    
            let levelValue = ''; //每层选择的值
            //第一层 事件代理
            $this.on('click', options.popClass1 + ">li", function () {
                //控制背景颜色高亮
                $(this).addClass("active").siblings().removeClass("active");
                // 获取当前点击的li的子元素的HTML节点 将获取的节点放到页面显示的第二级中
                let html = $(this).children("ul").html();
                $(this).parent().parent().next().children(".multi-level-ul2").html(html);
                $(this).parent().parent().next().show();
    
            });
            //第二层 事件代理
            $this.on('click', options.popClass2 + ">li", function () {
                $(this).addClass("active").siblings().removeClass("active");
                levelValue = $(this).children("span").text();
                $(this).parent().parent().prev().prev().text(levelValue);
                let level = $this.attr('data-level');
                //把选择的值和层级通过回调函数传递回去
                callback(levelValue, level);
                $(this).parent().parent().prev().hide();
                $(this).parent().parent().hide();
            });
            //点击空白处隐藏div
            $(document).click(function (event) {
                let targetArea = $('.multi-level-wrap'); // 设置目标区域
                if (!targetArea.is(event.target) && targetArea.has(event.target).length === 0) {
                    $(options.popClass1).parent().hide();
                    $(options.popClass2).parent().hide();
                }
            });
        }
    })(jQuery, window, document);

    在页面当中调用:

    $('.multi-level-wrap').each(function() {
        $(this).multi({
            trigger: '.multi-level-input', //触发事件的class
            popClass1: '.multi-level-ul1', //第一个弹窗的class
            popClass2: '.multi-level-ul2', //第二个弹窗的class
        }, function(params, level) {
            
        })
    })
    

      

    参考链接: https://blog.csdn.net/weixin_39398244/article/details/81539486

    参考链接: https://www.cnblogs.com/cbzg/p/5713232.html

    参考链接: https://www.jianshu.com/p/5196cb659fb6

  • 相关阅读:
    Django Ajax知识
    Django走过的坑
    Django-8 聚合查询与分组查询
    Django-7 ORM多表操作
    Django-6 Django ORM层
    Django-5 模板层
    docker 常用批量操作
    K8S 从私有仓库拉取镜像
    linux制作iso文件
    二进制安装docker
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/10831475.html
Copyright © 2020-2023  润新知