封装自己的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
封装自己的jquery插件的更多相关文章
- 如何将Js代码封装成Jquery插件
很多相同的Jquery代码会在很多页面使用,每次都复制粘贴太麻烦了,不如封装成一个Jquery插件就方便了,至于影响网页的速度不,我就没有测试了哈. 代码如下 这是一个自定闪烁打印文字的Jquery特 ...
- 【jQuery基础学习】08 编写自定义jQuery插件
目的:虽然jQuery各种各样的功能已经很完善了,但是我们还是要学会自己去编写插件.这样我们可以去封装一些项目中经常用到的专属的代码,以便后期维护和提高开发效率. jQuery插件的类型: 封装对象方 ...
- 做了一个jquery插件,使表格的标题列可左右拉伸
示例下载 插件名称命名为:jquery.tableresize.js,代码如下: /* Writen by mlcactus, 2014-11-24 这是我封装的一个jquery插件,能够使table ...
- jQuery编写插件--封装全局函数的插件(一些常用的js验证表达式)
上一篇写到了jQuery插件的3种类型,介绍了第一种类型的写法--封装jQuery对象的方法插件.这一篇要介绍第二种插件类型:封装全局函数的插件:这类插件就是在jQuery命名空间内部添加函数:这类插 ...
- 自己做jQuery插件:将audio5js封装成jQuery语音播放插件
日前的一个项目需要用到语音播放功能.发现Audio5js符合需求且使用简单,又鉴于jQuery控件便于开发操作,于是有了以下的封装. 首先先简单介绍一下Audio5js吧. Audio5js是一个能够 ...
- 封装jQuery插件的步骤
引语:jQuery提供了很多插件,我们在开发的过程使用插件能节省时间简化开发也避免从头开始编写每个组件,单我们除了懂得使用别人已编写好的插件以外,也到懂得如何封装属于我们自己的插件,以下就是封装jQu ...
- jquery插件封装
HTML <!DOCTYPE html> <html> <head> <title></title> <style> .page ...
- 最简单的原生js和jquery插件封装
最近在开发过程中用别人的插件有问题,所以研究了一下,怎么封装自己的插件. 如果是制作jquery插件的话.就将下面的extend方法换成 $.extend 方法,其他都一样. 总结一下实现原理: 将 ...
- 【jQuery】jquery插件封装
扩展jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入新的功能属性,此处添加的对象属性的名称就是你插件的名称: jQuery.fn ...
随机推荐
- Acwing-169-数独2(搜索, 剪枝)
链接: https://www.acwing.com/problem/content/171/ 题意: 请你将一个16x16的数独填写完整,使得每行.每列.每个4x4十六宫格内字母A~P均恰好出现一次 ...
- CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)H
题面 被神葱安利安利了本题. 我们贪心的想,如果有那么一坨相等的学号,那么肯定是保留一个人学号不变,其余的再推到学号+1的位置(准备与那个位置的其他人合并)处理. 虽然a[i]可大至1e18,不过如果 ...
- 2019牛客暑期多校训练营(第一场)H 线性基+计算贡献
题意 给n个整数,求满足子集异或和为0的子集大小之和. 分析 将问题转化为求每个元素的贡献次数之和. 先对n个数求线性基,设线性基大小为r,即插入线性基的数字个数为r,可以分别计算线性基内数的贡献和线 ...
- 2019暑假集训 windy数
题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为2的正整数被称为 Windy 数. Windy 想知道,在A和B之间,包括A和B,总共有多少个 Windy 数? 输 ...
- Vue_(组件通讯)组件
Vue组件 传送门 组件Component,可扩展HTML元素,封装可重用的代码.通俗的来说,组件将可重用的HTML元素封装成为标签方便复用: 组件的使用: 使用全局方法Vue.extend创建构造器 ...
- zabbix监控远端主机
接着上一篇博客,zabbix监控搭建起来以后,怎么用来监控其他主机呢,这一篇就来简单讲一下,希望对大家有所帮助. 安装一些依赖包 [root@winter ~]# yum install curl c ...
- HDU 5119 Happy Matt Friends ——(背包DP)
题意:有最多40个数字,取任意个数字他们的异或和>=k则是可行的方案,问有多少种可行的方案. 分析:dp[now][j]表示当前这个值的种类数,那么转移方程为dp[now][j] = dp[pr ...
- Android学习_7/25
常用控件 Android控件使用规律:先定义id,再指定宽度和高度,然后适当加入一些控件特有的属性 1. TextView 在界面上显示一段文本 2. Button ...
- Leetcode题目33.搜索旋转排序数组(中等)
题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在 ...
- 网络配置及一些shell命令概览
一.临时配置网络(ip,网关,dns)+永久配置 1.临时配置网络IP地址命令为“ifconfig 网卡名 ip地址/24”,例如: ifconfig eth0 192.168.16.253/24 2 ...