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 相关文章推荐
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
JS文件中加载jquery.js的实例代码
May 05 jQuery
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
jQuery实现鼠标拖动图片功能
Mar 04 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
使用Yii2实现主从数据库设置
2016/11/20 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
利用JS实现数字增长
2016/07/28 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
python实现发送邮件功能
2017/07/22 Python
python获取代理IP的实例分享
2018/05/07 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
《猴子种树》教学反思
2014/02/14 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers