近日有需求做一个职业选择弹框,在网上搜了半天也没合适的;

暴躁大佬协助我DIY一个插件,直接使用,顺滑流畅,随心所欲!特别鸣谢@一样菜

不多BB了,直接撸代码:

引用写在上面:

/* 更改职业 */
selectOccupation : function() {
// 展示类型
var ms = new MutliSelectorUI(App.dataCode, function (data) {
App.OccupationTpCd = data.code;
App.OCCUPATION_NAME = data.name;
var str = data.name;
if (str.length>14) {
str = str.substr(0,14)+"...";
}
$("#selectOccupation").val(str);
$("#OccupationVal").val(data.code);
ms.hideDialog();
});
if(App.version) {
ms.showDialog();
}else{
ms.hideDialog();
}
},

  

function MutliSelectorUI(data, fn){
const data_list = data;
var panelBg = document.createElement('div')
panelBg.className="msu_panel_background"
panelBg.setAttribute('id','msu_panel_background')
document.body.appendChild(panelBg)
var $panel = $('#msu_panel_background')
$panel.css({
display: 'none'
}) this.showDialog = function(){
$panel.show()
$("#pageB").attr({"data-btnLeft":"false||", "data-btnRight":"false||"});
Fw.showPageArea($("#pageB"), [ $(".page") ], true);
}
this.hideDialog = function(){
$panel.hide()
$("#pageB").attr({"data-btnLeft":"true|返回|App.backPerson()", "data-btnRight":"true|保存|App.saveOccupation()"})
Fw.showPageArea($("#pageB"), [ $(".page") ], true)
}
let self = this
$panel.empty()
$panel_box = $('<div class="msu_panel_box"></div>')
$panel_box_cancel = $('<div class="msu_panel_cencels">取 消</div>')
$panel.append($panel_box)
$panel.append($panel_box_cancel) this.renderMainRow = function(){
let indx = 0;
$panel_box.empty()
for(let item of data_list){
console.log(JSON.stringify(item.classes))
var $row_item = $('<div class="msu_main_row" code="'+item.code+'" name="'+item.name+'" isexpend="false"><div class="msu_text">'+item.name+'</div><div class="msu_arrow right"></div></div>')
$panel_box.append($row_item)
if(item.classes.length == 0){
$row_item.find('.msu_arrow').hide()
}
indx++
if(indx == data_list.length){
$row_item.css({
borderBottom: '0'
})
} }
} // init
this.renderMainRow()
$panel_box_cancel.on('click',function(){
self.hideDialog()
})
$panel.on('click','.msu_main_row',function () {
let _code = $(this).attr('code')
let _name = $(this).attr('name')
let isexpend = $(this).attr('isexpend')
let classes = [] for(let dt of data_list){
if(dt.code == _code){
classes = dt.classes
break;
}
}
if(classes.length == 0){ if(typeof fn === 'function'){
fn({
code:_code,
name: _name
})
}
return;
}
$panel_box.empty(); var $subitem = $('<div class="msu_back_btn"><div class="msu_arrow left"></div><div class="msu_text">'+_name+'</div></div>')
$panel_box.append($subitem)
let indx = 0
for(var cls of classes){
var $subitem = $('<div class="msu_sub_row" code="'+cls.code+'" name="'+cls.name+'">'+cls.name+'</div>')
$panel_box.append($subitem);
indx++
if(indx == classes.length){
$subitem.css({
borderBottom: '0'
})
}
} })
$panel.on('click','.msu_sub_row',function () {
var _code = $(this).attr('code')
var _name = $(this).attr('name')
if(typeof fn === 'function'){
fn({
code:_code,
name: _name
})
}
})
$panel.on('click','.msu_back_btn',function () {
self.renderMainRow()
}) }

如何使用外部插件picker的更多相关文章

  1. angular4.0如何引入外部插件2:declare方案

    前面有个<angular4.0如何引入外部插件1:import方案>,但是有局限,因为方案1需要用到@types这个东西. 但是并不是每一个插件都有@types,所以现在写个方案2. 拿引 ...

  2. angular4.0如何引入外部插件1:import方案

    引入外部插件是项目中非常重要的环节.因为部分插件以js语法写的,而ng4用的是ts语法,所以在引入时需要配置. Step1:引入swiper插件的js文件[css在下面会讲到,先别急] 很重要的意见: ...

  3. 不用外部插件启用u盘ntfs写功能

    mac下启用NTFS u盘读写功能. 不用要任何外部插件,其实mac本来就支持,只是因为专利原因隐藏了而已. macbook:~ uwe$ sudo umount /Volumes/UNTITLED ...

  4. metronic后台模板学习 -- 所用外部插件列表

    插件名称 描述 URL jQuery 1.11.0 js库,不用介绍了 http://www.jquery.com jQuery Migrate plugin 1.2.1 jQuery 老版本过渡迁移 ...

  5. vue使用一些外部插件及样式的配置

    一.配置全局css及js样式 1.首先将事先写好的css文件及js文件放在src文件目录下的assets文件下 2.在main.js文件输上图右边两个红色框的代码 二.配置全局jQuery及boots ...

  6. ionic3引用外部插件--百度地图及echart报表的使用

    前言 ionic3提供的组件已经相当丰富咯,但是事实上有些特殊的需求,比如使用百度地图,或者第三方插件echart报表插件是,就不能用传统的方式去使用第三方插件咯,如何在Ionic3项目中使用第三方J ...

  7. Vue-cli开发笔记三----------引入外部插件

    (一)绝对路径直接引入: (1)主入口页面index.html中头部script标签引入: <script type="text/javascript" src=" ...

  8. 在vue-cli中引入外部插件

    一.可以用npm下载的 现在以jquery为例子: 1 先在package.json中的dependencies中写入“jquery”:“^3.2.1”(jquery版本) 2 在npm中搜索jque ...

  9. MyEclipse2016添加外部的maven插件

    1.在maven官网下载最新的maven安装包,下载地址:http://maven.apache.org/download.cgi: 2.目前maven的版本是3.5.0,我们下载apache-mav ...

随机推荐

  1. Java之秒杀活动解决方案

    0 引言 本文主要描述,服务端做相关秒杀活动的时候,对应的解决方案,即高并发下的数据安全. 1 优化方案 1.1 乐观锁思路 Redis中的watch,请求时,通过Redis查询当前抢购数据,如果当前 ...

  2. node——简单的服务器启动+乱码问题解决,响应报文头

    这个是一个比较简单的代码 // 1.加载hrrp模块 var http=require('http'); // 2.创建一个http服务对象 var server=http.createServer( ...

  3. GitHub报错error: bad signature

    Git报错 bad signature 将文件提交到仓库时,抛出以下错误: 报错 Roc@DESKTOP-AF552U2 MINGW64 /e/note/Git (master) $ git add ...

  4. [NOIP补坑计划]NOIP2017 题解&做题心得

    终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...

  5. 判断浏览器是PC设备还是移动设备

    var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { ...

  6. 自适应增强(Adaptive Boosting)

    简介 AdaBoost,是英文”Adaptive Boosting“(自适应增强)的缩写,是一种迭代提升算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成 ...

  7. Matplotlib 绘图与可视化 一些属性和错误

    属性 *)调整图像边缘及图像间的空白间隔plt.subplots.adjust(6个参数) 图像外部边缘的调整可以使用plt.tight_layout()进行自动控制,此方法不能够很好的控制图像间的间 ...

  8. 2015 Multi-University Training Contest 8 hdu 5384 Danganronpa

    Danganronpa Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  9. Apache Tez 0.7、0.83、 0.82 安装、调试笔记

    ———————————————————— 准备 Tez 编译环境 ———————————————————— 1 需要的支持 tez0.7 需要 Hadoop 2.60 以上 2 需要的 linux 相 ...

  10. yum 命令讲解

    (一)yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...