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图片放大镜效果
Jun 23 jQuery
jQueryUI Sortable 应用Demo(分享)
Sep 07 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
jQuery的Ajax接收java返回数据方法
Aug 11 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 jQuery
jquery实现垂直手风琴导航栏
Feb 18 jQuery
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
jQuery 动态粒子效果示例代码
Jul 07 jQuery
jQuery+ajax实现用户登录验证
Sep 13 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
php日历制作代码分享
2014/01/20 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
express.js中间件说明详解
2019/03/19 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python 用下标截取字符串的实例
2018/12/25 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
PHP面试题及答案二
2015/05/23 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
机修工岗位职责
2013/11/24 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
作风大整顿心得体会
2014/09/10 职场文书
法律讲堂观后感
2015/06/11 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
springboot实现string转json json里面带数组
2022/06/16 Java/Android