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弹幕效果
May 06 jQuery
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
May 13 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
使用jQuery 操作table 完成单元格合并的实例
Dec 27 jQuery
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
jQuery实现图片随机切换、抽奖功能(实例代码)
Oct 23 jQuery
jQuery 移除事件的方法
Jun 20 jQuery
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
jQuery ajax - getScript() 方法和getJSON方法
May 14 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
自动分页的不完整解决方案
2007/01/12 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
JavaScript执行顺序详细介绍
2013/12/04 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
小程序实现多列选择器
2019/02/15 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python绘制3D图形
2018/05/03 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
公司庆典活动邀请函
2014/01/09 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python