jquery自定义组件实例详解


Posted in jQuery onDecember 31, 2020

缘起

我们知道在JQ中,是允许我们自定义一些插件与扩展的。定义的方式也比较简单,采用$.extend就行,那么下面就来看看在JQ中自定义一个插件的实例

JQuery如何封装一个组件

效果

我们先来看封装好的组件的效果图,这是一个根据组织机构选择人员的组件。

jquery自定义组件实例详解

实现原理

我们先定义一个DbwSelectUser函数

DbwSelectUser : function (options) {
 var opt = $.extend({
 //是否多选:true(多选),false(单选)
 multi:true,
 offset:'auto',
 //layerIndex:弹出窗口索引
 //users数据结构:[{userId:'', userName:'', departId:'', departName:''}]
 onOk:function(layerIndex, users){}
 }, options || {});
 $.LoadIframe({
 title: '请选择人员',
 content: 'assets/js/extend/jquery/userSelect/user-select.jsp?multi=' + opt.multi,
 maxmin: false,
 area: ['840px', '500px'],
 resize: false,
 scrollbar:false,
 offset: opt.offset,
 btn: ['确定', '取消'],
 yes: function (index, layero) {
  var iframeWin = $(layero).find('iframe')[0].contentWindow;
  //users:[{userId:'', userName:'', departId:'', departName:''}]
  var users = iframeWin.getSelectedUsers();
  opt.onOk(index, users);
  return false;
 }
 }, false);
}

这里的user-select.jsp就是要弹出的页面

这边调用了LoadIframe方法并传入了参数,我们来看看LoadIframe方法的实现

LoadIframe: function (options, fullScreen) {
 /*layer的默认配置*/
 var _default = {
  type: 2,
  title: '系统窗口',
  content: '',
  area: 'auto',
  shadeClose: false,
  maxmin: true,
  maxWidth: 600,
  maxHeight: 500
 },
 o = $.extend(_default, options || {}),
 index = layui.layer.open(o);
 if (fullScreen) {
 //窗口全屏
 layui.layer.full(index);
 }
 return index;
}

使用

$.DbwSelectUser({
 //offset:弹出框显示位置(空或auto:居中,rb:右下角)
 offset:'rb',
 //选好人员后弹出框的“确定”按钮单击事件回调函数
 onOk:function(layerIndex, users) {
 //layerIndex:弹出框layer的索引
 //users数据结构:[{userId:'', userName:'', departId:'', departName:''},{....}]
 //以下编写接收到所选人员后自己的业务逻辑
 }
});

可以看到其实是对layui的一个弹窗进行了封装,其中$.extend是JQuery里面扩展插件的一个方法,会用后面的同名变量替换前面的。在上诉代码中的作用是用来如果你没有传某个属性,就用默认的属性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
基于jquery实现多级菜单效果
Jul 25 jQuery
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
基于jQuery的左滑出现删除按钮的示例
Aug 29 jQuery
jQuery选择器之子元素选择器详解
Sep 18 jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
jquery实现的分页显示功能示例
Aug 23 jQuery
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
jQuery+ajax实现文件上传功能
Dec 22 jQuery
JS+JQuery实现无缝连接轮播图
Dec 30 #jQuery
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 #jQuery
jQuery实现简单轮播图效果
Dec 27 #jQuery
原生jQuery实现只显示年份下拉框
Dec 24 #jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 #jQuery
jquery实现图片放大镜效果
Dec 23 #jQuery
jQuery实现增删改查
Dec 22 #jQuery
You might like
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP文本数据库的搜索方法
2006/10/09 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
EL表达式截取字符串的函数说明
2017/09/22 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
大学生职业生涯规划书模板
2014/01/18 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
安全检查汇报材料
2014/12/26 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
大学生就业意向书
2015/05/11 职场文书
2015学校年度工作总结
2015/05/11 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers