模拟下拉列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了模拟下拉列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10366字,纯文字阅读大概需要15分钟。
内容图文
名称:laSelect功能:模拟浏览器的原生下拉列表功能
原因:解决下拉列表在IE 7 - 下的兼容性问题,并提供更自由的外观以及功能设定。
----------------------------------------------------------------
1. 使用方法:
(1) html 结构:
创建一个包裹所有内容的盒子,必须要指定一个id,该元素由使用者自己创建:
(2) 引入:laSelect.js
2. laSelect.js核心方法说明:
核心方法:
laSelect()
参数说明:
核心方法实现的所有功能,必须要有一个对象作为参数。
以下是该参数对象中可接受的属性:
dom : [必须],取值为包裹盒子元素的id。
theme : 设置是否有默认的样式,如果使用默认的样式,可以不写。 取值为'none'时表示不适用默认样式。
css : 在theme值不为'none'时,用于微调默认的样式。
data : 一个数组,该数组用于存放着生成下拉列表选项的数据。
fn : 当下拉列表选项被选择后触发的一个由用户自定义的回调功能。
属性详解:
· theme
用于设置是否有默认的样式。
如果取值为 theme:'none',则表示只生成所需要 的HTML结构,而不具有任何样式,
所有的样式都是由使用者自己书写。
· css
如果theme取值不为'none'时,会生成默认的样式。
css对象可以对默认的样式进行调整。
css是一个对象,它可以接受以下属性参数:
W: 设置包裹盒子元素的宽度,示例:W:'180px'。H: 设置包裹盒子元素的高度。bg: 设置下拉列表的背景,示例:bg:'#fff'。fontSize: 设置字体的大小,示例:fontSize:'13px'。color: 设置文字的颜色,示例:color:'#000'。border: 设置包裹盒子元素的边框样式,示例:border:'1px solid #eee'。Uborder: 设置包裹下拉列表选项的边框样式。borderRadius:设置包裹盒子元素的圆角,示例:borderRadius:'5px'。textIndent:设置文字的首行缩进,示例:textIndent:'5px'。linkcolor: 设置下拉列表选项默认的文字颜色。hovercolor: 设置hover下的下拉列表选项的文字颜色。linkbg: 设置下拉列表默认的背景颜色。hoverbg: 设置hover下的下拉列表选项背景颜色。
· data
一个数组。保存着生成下拉列表选项的数据。
其格式如下:
1 [2 {'name':'text1','id','idValue1'},3 {'name':'text2','id','idValue2'},4 ....5 ]
* 必须要有name与id,name是下拉列表选项要显示的文本,id是后台所需要 用到的。
· fn
当下拉列表选项被选择后,用户可以发送一个自定义的回调功能。
取值是一个function。
fn中的方法可以接收以下参数:
elem : 当前的下拉列表选项:
—| elem.index 可以获取当前下拉列表的索引值。
ulElem : 获得包含所有下拉列表选项的ul元素。
oBoxElement:获得整个下拉列表对象。
示例:
1 'fn':function(elem,ulElem,oBoxElement){2 console.log(elem)3 console.log(ulElem)4 console.log(oBoxElement)5 }
3. 一般的使用示例:
1 laSelect({2 'dom':'selectBox'3 });4 // 生成一个默认的初始下拉列表框
1 laSelect({2 'dom':'selectBox',3 'theme':'none',4 'data' :Data5 });6 // 生成一个不带任何样式的下拉列表
1 laSelect({2 'dom':'selectBox',3 'css':{'W':'180px','H':'30px','bg':'#000'},4 'data':Data,5 'fn':function(elem){alert(elem.index)}6 });7 //自定义一个下拉列表框,并可传入自定义的事件功能
4. HTML 结构说明
本次模拟原生下拉列表所用到的HTML结构如下表:
id | class | description |
customId | 用户自定义自创建的包裹盒子ID |
customId > UL | 包裹盒子内的一个UL列表,用于展示下拉列表数据。根据data属性的值自动创建。 |
customId > b | 包裹盒子内的一个b元素,用于生成下拉的三角形图标 |
customId > em | 包裹盒子内的一个em元素,用于记录最终的选择结果,它的元素内容,是用户选择的下拉列表的内容,它的value属性,则是下拉列表选项的id名称。 |
6 .实现联动
思路:通过fn属性为用户选择下拉列表选项后绑定事件回调,该回调利用了当前下拉列表选项的索引值(index 属性) 实现对下一级的select进行重新生成。
示例:
1 var select1 = function(x,y,z){ 2 var indexs = x.index-1, //获取当前下拉列表选项的索引 3 val = ''; //保存着生成下一级下拉列表的数据。 4 if(indexs>=0){ //如果用户选择的是"请选择",那么将生成数据值为空。 5 val = ''; 6 }else{ //否则获取生成数据 7 val = subData; 8 } 9 10 SubSelect(val) //执行下级下拉列表的生成方法。11 }12 13 14 laSelect({15 'dom':'select',16 'data':data,17 'css':{'H':'20px'},18 'fn':select119 });20 21 function SubSelect(val){22 laSelect({23 'dom':'select1',24 'css':{'H':'25px','bg':'#eee'},25 'data':val26 });27 }28 29 SubSelect(); //默认生成一条
============================ Code ============================
1 ;(function(root){ 2 3 var UlBox = []; 4 function hideUl(){ 5 for(var i=0;i<UlBox.length;i++){ 6 UlBox[i].style.display="none"; 7 UlBox[i].flag = true; 8 } 9 } 10 11 document.onclick=hideUl; 12 document.oncontextmenu=hideUl; 13 14 function laSelect(param){ 15 16 this.oBox = document.getElementById(param.dom); 17 if(!this.oBox) return false; 18 this.data = param.data?param.data:[]; 19 this.css = param.css; 20 this.fn = param.fn; 21 this.theme = param.theme; 22 this.UL = document.createElement('UL'); 23 this.EM = document.createElement('EM'); 24 this.Tr = document.createElement('B'); 25 this.initStyle = {'W':'198px','H':'17px','bg':'white','fontSize':'13px','border':'1px solid #aaaaaa','Uborder':'1px solid #7a9cd3','borderRadius':'2px','color':'#000','textIndent':'5px','linkcolor':'#000','hovercolor':'#fff','linkbg':'none','hoverbg':'#1e90ff'}; 26 27 for(var i in this.css){ 28 if(this.css[i] != this.initStyle[i]) this.initStyle[i] = this.css[i]; 29 } 30 31 this.init(); 32 if(this.theme!="none"){ 33 this.setStyle(); 34 } 35 this.core(); 36 37 } 38 39 laSelect.prototype.createStyle=function(obj,css){ 40 for(var i in css){ 41 obj.style[i]=css[i]; 42 } 43 }; 44 45 laSelect.prototype.init=function(){ 46 47 var a = []; 48 this.oBox.innerHTML=""; 49 a.push('
内容总结
以上是互联网集市为您收集整理的模拟下拉列表全部内容,希望文章能够帮你解决模拟下拉列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。