dropMenu----简单的下拉菜单生成器

HTML 

<div class="input-group"><span class="input-group-addon" style="width: 100px" >职级:</span><input type="text" class="units form-control" id="jobTitle" value="其他" style="border-radius:0 4px 4px 0;"></input><span class="caret beside"></span>
</div>

js

$(function(){var title,populationType,titleInParty;$.ajax({url:'/api/v1/user/getUserTypeInfo',type:'GET',dataType:'json',success:function (data) {title=data.data.title;titleInParty=data.data.titleInParty;populationType=data.data.populationType;partyLabel('jobTitle',title);partyLabel('populationType',populationType);partyLabel('titleInParty',titleInParty);}});

function partyLabel(menuID,data){new DropMeun({'id':menuID,"data":data,"dataSrc":"name", //数据是下面的这种格式的,你要的是name的值"ableSearch":true, //可以搜索"style":{ //样式,可选"width":173,"maxHeight":200,"left":0, //定位到哪里"top":5,"initPos":"left" //设置在哪边出现}})}

3.在页面中引用一个js 文件

(function(vq0599) {window.DropMeun = vq0599
})(function() {/*-- tools --*/function getRealTop(node) {return node.offsetParent.tagName.toUpperCase() === 'BODY' ?node.offsetTop :node.offsetTop + arguments.callee(node.offsetParent)}function getRealLeft(node) {return node.offsetParent.tagName.toUpperCase() === 'BODY' ?node.offsetLeft :node.offsetLeft + arguments.callee(node.offsetParent)}/*-- tools end--*/function DropMeun(option) {this.picker = nullthis.self = nullthis.option = optionthis.item = option.item || []this.style = option.style || {}this.dataList = option.data || []this.init()return this;}DropMeun.prototype.init = function () {var html = '',_this = thisthis.self = document.createElement('ul')this.picker = document.getElementById(this.option.id)if (! this.picker) {throw 'picker is null, making sure that picker\'s ID \''+ this.option.id +'\' is correct'return}if (this.option.ableSearch) {html += '<li><input class="dropMeun-searchInput" type="text"></li>'}this.dataList.forEach(function(data, index) {var item         = _this.option.dataSrc ? data[_this.option.dataSrc] : data,content = _this.item.render  ? _this.item.render(item, data)  : itemhtml += '<li class="dropMeun-item '+ (_this.item.className || '') +'" data-index="'+ index +'">'+ content +'</li>'})this.self.classList.add('dropMeun')this.self.innerHTML = htmldocument.body.appendChild(this.self)this.setStyle()this.bindEvent()}DropMeun.prototype.setStyle = function() {this.self.style.width =this.style.width ?(parseInt(this.style.width) - 26) + 'px' :'150px'this.self.style.maxHeight =this.style.maxHeight ?(parseInt(this.style.maxHeight) - 26) + 'px' :'300px'var w = getRealLeft(this.picker) + (parseInt(this.style.left) || 0)var h = getRealTop(this.picker) + this.picker.offsetHeight + (parseInt(this.style.top) || 0)var realWidth = parseInt(this.self.style.width) + 26     // 26 = dobule(padding + border)if (this.style.initPos === 'right') {w = w - realWidth + this.picker.offsetWidth}this.self.style.top  = h + 'px'this.self.style.left = w + 'px'}DropMeun.prototype.bindEvent = function() {var_this = this,iEvent = this.picker.nodeName.toUpperCase() !== 'INPUT' ?'click' :this.picker.type.toUpperCase() === 'TEXT' ?'focus' : 'click'this.picker.addEventListener('click', function(ev) {var ev = ev || window.evev.stopPropagation()})//
        this.picker.addEventListener(iEvent, function(ev) {document.body.click()     // 触发 window.click 使其他dropMeun关闭
_this.self.style.display = 'block'})//
        window.addEventListener('click', function() {_this.self.style.display = 'none'})//
        this.self.addEventListener('click', function(ev) {var ev = ev || window.evev.stopPropagation()// 事件委托 item点击if (ev.target.classList.contains('dropMeun-item')) {var index = parseInt(ev.target.getAttribute('data-index'))data = _this.option.dataSrc ?_this.dataList[index][_this.option.dataSrc] :_this.dataList[index]if (iEvent === 'focus') {_this.picker.value = ev.target.innerText}if (_this.item.callbakc) {_this.item.callbakc(data, _this.picker, _this.dataList[index], _this.dataList)}_this.self.style.display = 'none'}})//
        if (_this.option.ableSearch) {_this.searchInput = _this.self.getElementsByClassName('dropMeun-searchInput')[0]_this.searchInput.addEventListener('keyup', function() {var target = this.value.trim(),items = _this.self.getElementsByClassName('dropMeun-item');[].slice.call(items).forEach(function(item, index) {item.style.display =item.innerText.indexOf(target) === -1 ?'none' : ''})})}}return DropMeun
}())

4.在页面中引用一个css文件

ul,
li {list-style: none;margin: 0;padding: 0;
}.dropMeun {position: absolute;border: 1px solid #ccc;overflow: auto;padding: 8px 12px;box-shadow: 0 6px 12px rgba(0, 0, 0, .175);background-color: #fff;border-bottom-left-radius: 4px;border-bottom-right-radius: 4px;box-sizing: content-box;display: none;
}.dropMeun li.dropMeun-item {min-width: 150px;padding: 2px 2px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;
}.dropMeun li.dropMeun-item:hover {cursor: pointer;background-color: rgba(238, 238, 238, 0.8);
}.dropMeun-searchInput {outline: none;width: 100%;box-sizing: border-box;
}

 

转载于:https://www.cnblogs.com/SunShineM/p/6589318.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Holedox Moving

2012-08-11 我的第一个A*算法&#xff1a; 四处看A*算法。。还是有一点没有弄明白就是那个当已经在列表中的时候再次进入的时候怎么去更新。 这道题。。有点难开始的时候不会位压缩&#xff0c;去看了一个别人的代码。所以感谢一下。这位高手。写了一个bfs(),500多ms。 看了A*…

mint mvc文件上传功能——使用篇

为什么80%的码农都做不了架构师&#xff1f;>>> 为了不打击大家的积极性&#xff0c;暂时只着重讲用法&#xff0c;原理方面暂时不讲太多。 配置web.xml 文件上传需要用到servlet3的异步处理功能。需要在web.xml配置文件中加入异步支持声明&#xff08;注释处&am…

TLS 1.2详解

TSL由多个协议组成的两层协议集合&#xff0c;工作与应用层和传输层之间。 TLS协议包含两层协议&#xff1a;记录层协议&#xff08;TLS Record Protocol协议&#xff09;和 握手协议&#xff08;TLS Handshake Protocol协议&#xff09;&#xff0c;底层采用可靠传输协议&…

个人作业2——英语学习APP案例分析

第一部分 调研&#xff0c; 评测 1.下载并使用&#xff0c;描述最简单直观的个人第一次上手体验&#xff1a; 没有各种广告&#xff0c;界面简洁&#xff0c;软件安装包略小于其他翻译软件。就内存的占用而言优于同款热门软件有道词典。 2.必应词典&#xff08;Android客户端&a…

IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

这里介绍一下网友开源的MBProgressHUD类&#xff0c;实现等待框&#xff0c; 一、网上下载 MBProgessHUD 类文件&#xff0c;直接导入到工程即可 二、示例分析 在我的工程中示例如下&#xff1a; 1&#xff09;在ShowImageViewController.h头文件代码如下&#xff1a; #import…

java中跨时区的日期格式转换

2019独角兽企业重金招聘Python工程师标准>>> 先上一段代码 public class DataTransfer {public static void main(String[] args) {String dateStr "Sep 30, 2014 12:00:00 AM";SimpleDateFormat sdf new SimpleDateFormat();sdf.applyPattern("MM…

C语言读取写入CSV文件 [二]进阶篇——写入CSV文件

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 本系列文章目录 [一] 基础篇 [二] 进阶篇——写入CSV [三] 进阶篇——读取CSV 什么是 包裹&#xff08;使用双引号&…

K8S中部署apisix(非ingress)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 不使用pvc的方式在K8S中部署apisix-gateway 简介 因为公司项目准备重构&#xff0c;现在做技术储备&#xff0c;之前公司项…

机器学习理论知识部分--偏差方差平衡(bias-variance tradeoff)

摘要&#xff1a; 1.常见问题 1.1 什么是偏差与方差&#xff1f; 1.2 为什么会产生过拟合&#xff0c;有哪些方法可以预防或克服过拟合&#xff1f; 2.模型选择例子 3.特征选择例子 4.特征工程与数据预处理例子 内容&#xff1a; 1.常见问题 1.1 什么是偏差与方差&#xff1f; …

有手就行3——持续集成环境—maven、tomcat、安装和配置

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 有手就行3——持续集成环境—maven、tomcat、安装 持续集成环境**(5)-Maven****安装和配置** 持续集成环境(6)-Tomcat安装…

.netcore基础知识(一)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 先来说说web服务器 先来一张图 一个典型的进程外托管模型 我们先看kestrel这一部分 我们在它前面放了一个方向代理服务器n…

BZOJ 1791 岛屿(环套树+单调队列DP)

题目实际上是求环套树森林中每个环套树的直径。 对于环套树的直径&#xff0c;可以先找到这个环套树上面的环。然后把环上的每一点都到达的外向树上的最远距离作为这个点的权值。 那么直径一定就是从环上的某个点开始&#xff0c;某个点结束的。 把环拆成链&#xff0c;定义dp[…

什么是SAS

什么是SAS&#xff1f;简单的说&#xff0c;SAS是一种磁盘连接技术。它综合了现有并行SCSI和串行连接技术&#xff08;光纤通道、SSA、IEEE1394及InfiniBand等&#xff09;的优势&#xff0c;以串行通讯为协议基础架构&#xff0c;采用SCSI-3扩展指令集并兼容SATA设备&#xff…

hdu区域赛在线热身赛 暨 第十二场组队赛

题目编号&#xff1a;hdu 4257~4266 (对应比赛题号1001~1010) 这是我们第十二场组队赛&#xff0c;在今天中午进行。 比赛刚开始&#xff0c;依然是由我的队友读题。还没看几题&#xff0c;就发现了好多题judge时长高达20秒&#xff0c;这真的有点给我们心理造成压力。不过&…

powerdesign相关

1.安装程序和汉化放百度云了 2.打印错误处理 http://jingyan.baidu.com/article/c45ad29cd84e4b051753e2c3.html 3.导出sql http://jingyan.baidu.com/article/7082dc1c48960ee40a89bd38.html 4.name和comment同步 http://blog.csdn.net/steveguoshao/article/details/16940347…

Spring系列15:Environment抽象

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 本文内容 Environment抽象的2个重要概念Profile 的使用PropertySource 的使用 Environment抽象的2个重要概念 Environme…

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(上)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 提示&#xff1a;本系列笔记全部存在于 Github&#xff0c; 可以直接在 Github 查看全部笔记 持续部署概述 持续部署是能…

PS图像菜单下计算命令

PS图像菜单下计算命令通过通道的混合模式得到的选区非常精细&#xff0c;从而调色的时候过度非常好。功能十分强大。 下面用计算命令中的"相加"和"减去"模式做实例解析&#xff0c;这里通道混合模式和图层混合模式原理是一样的。 原图&#xff1a; 实例目…

win10 VScode配置GCC(MinGW)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前提 安装 Visual Studio Code安装 C/C 扩展 for VS Code 也可以在vscode的extension界面搜索’c’查找插件安装 3. 获取最…

复制构造函数的用法及出现迷途指针问题

复制构造函数利用下面这行语句来复制一个对象&#xff1a; A (A &a) 从上面这句话可以看出&#xff0c;所有的复制构造函数均只有一个参数&#xff0c;及对同一个类的对象的引用 比如说我们有一个类A&#xff0c;定义如下&#xff1a; ?12345678910class A{public:A(int i…