基于jquery扩展漂亮的下拉框可以二次修改


Posted in Javascript onNovember 19, 2013

继续发一篇关于web前端自定义控件——ComboBox(下拉框),以往我在使用下拉框控件老是为了样式丑陋而烦恼,现在分享这个控件,希望有用的同仁们可以收藏,或进行二次修改,达到你想要的效果。

分解自定义下拉框:

1.创建构造函数,初始化赋值控件值。

2.绑定控件呈现在前台。

3.点击下拉框控件,展示下拉列表

4.点击触发下拉框控件,收起下拉列表。

5.点击下拉项触发事件。

代码如下:

Html代码:

<b class="select_type"></b>

css样式:
.dropdown span a{float:left;background:url(/img/Icon_BG.png);} 
/*下拉框 http://power.76741.com*/ 
.dropdown span a{background-position: -213px -75px;} 
.dropdown{float:left;width:105px;} 
.dropdown span{border:solid 1px #ccc;width:95%;height:28px;background:url(/img/tbline_bg.png);border-radius:8px;overflow:hidden;} 
.dropdown span{float:left;padding-left:10px;line-height:28px; cursor:pointer;} 
.dropdown span.active{border-radius:8px 8px 0px 0px;} 
.dropdown span font{width:auto;margin-right: 0px;float:left;} 
.dropdown span a{float:right;width:20px;height:20px;margin:4px 0;} 
.dropdown p{border:solid 1px #ccc;border-top:0px;width:103px;display:none;position:absolute;margin-top:28px;background-color:#fff;z-index:3;max-height:280px;overflow-y: auto; overflow-x: hidden;} 
.dropdown p a{float:left;line-height:28px;height:28px;padding-left:10px;color:#666;font-size:14px;cursor:default;text-align:left;width:100%;overflow:hidden;} 
.dropdown p a:hover{background:url(/img/tbline_bg.png);color:#666;}

Js代码:

1、自定义类:

//下拉框 
var ComboBox = function () { 
this.tag; 
this.data_default; 
this.data_list; 
this.index = 0; var _this = this; 
var _index, _tag, _value; 
//初始化 
this.init = function () { 
_tag = _this.tag; 
_index = _this.index; 
//设置对象 
_this.setDropdown(_this.data_default, _this.data_list); 
//赋值绑定事件 
if (_tag.find('span font').length > 0) _value = _tag.find('span font').attr('_id'); 
if (_tag == undefined) { return false; } 
_this.showEvent(); 
_this.selectedIndex(_index); 
return true; 
} 
//设置下拉列表 
this.setDropdown = function (default_data, list) { 
var css = _tag.attr('class'); 
if (default_data == undefined) { 
default_data = { id: 'null', name: '' }; 
} 
var _html = ''; 
if (_tag.find('p').length > 0 && _tag.find('span').length > 0) { 
$.each(list, function (i, value) { 
_html += '<a _id="' + value.id + '">' + value.name + '</a>'; 
}); 
_tag.find('span font').replaceWith('<font _id="' + default_data.id + '">' + default_data.name + '</font>'); 
_tag.find('p').html(_html); 
} else { 
_html = '<div class="dropdown ' + css + '">'; 
_html += '<span><font _id="' + default_data.id + '">' + default_data.name + '</font><a></a></span>'; 
_html += '<p>'; 
if (list) { 
$.each(list, function (i, value) { 
_html += '<a _id="' + value.id + '">' + value.name + '</a>'; 
}); 
} 
_html += '</p>'; 
_html += '</div>'; 
var parent = _tag.parent(); 
_tag.replaceWith(_html); 
_tag = parent.find('.dropdown' + (css.length > 0 ? '.' + css.replace(' ', '.') : '')); 
} 
} 
//下拉事件 
this.showEvent = function () { 
_tag.find('span').unbind('click').click(function () { 
var p = $(this).parent().find('p'); 
if (p.css('display') == 'block') { 
p.css('display', 'none'); 
$(this).removeClass('active'); 
} else if (p.html().length > 0) { 
p.css('display', 'block'); 
$(this).addClass('active'); 
} 
}); 
} 
//选中事件 
this.selectedIndex = function (index) { 
_tag.find('p a').unbind('click').click(function () { 
var parent = $(this).parent().parent(); 
//给下拉框赋值 
if ($(this).text().length > 0) { 
var font = parent.find('font'); 
font.text($(this).text()); 
font.attr("_id", $(this).attr('_id')); 
_this.selectedIndexExpand(parent, $(this).index()); 
parent.find('span').removeClass('active'); 
} 
parent.find('p').css('display', 'none'); 
}); 
if (_tag.find('p a').length <= _index) _index = 0; 
if (_value && _value != '') { 
_index = _tag.find('p a[_id="' + _value + '"]').index(); 
} 
_tag.find('p a:eq(' + _index + ')').click(); 
} 
//选中事件扩展 
this.selectedIndexExpand = function (tag, index) { } 
}

2、示例代码:
//http://www.naoqiu.com 
var array_state = [{ id: -1, name: '状态' }, { id: 1, name: '未成功' }, { id: 2, name: '成功' }, { id: 3, name: '失败'}]; 
//状态下拉控件 
var select_type = new ComboBox(); 
select_type.tag = $('.select_type'); 
select_type.data_default = array_state[0]; 
select_type.data_list = array_state; 
select_type.selectedIndexExpand = function (tag, index) { 
//fun_Pager(); 
} 
select_type.init();

3、示例图:
基于jquery扩展漂亮的下拉框可以二次修改
Javascript 相关文章推荐
jquery 提交值不为空的元素示例代码
May 10 Javascript
html dom节点操作(获取/修改/添加或删除)
Jan 23 Javascript
SeaJS入门教程系列之使用SeaJS(二)
Mar 03 Javascript
javascript实例--教你实现扑克牌洗牌功能
May 15 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
JS中产生标识符方式的演变
Jun 12 Javascript
JavaScript定时器制作弹窗小广告
Feb 05 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
JavaScript中window和document用法详解
Jul 28 Javascript
Vuejs通过拖动改变元素宽度实现自适应
Sep 02 Javascript
showModelDialog弹出文件下载窗口的使用示例
Nov 19 #Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
Nov 19 #Javascript
jquery showModelDialog的使用方法示例详解
Nov 19 #Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
Nov 19 #Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 #Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
Nov 19 #Javascript
jQuery控制iFrame(实例代码)
Nov 19 #Javascript
You might like
PHP 编写的 25个游戏脚本
2009/05/11 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
了解重排与重绘
2019/05/29 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
Django框架视图介绍与使用详解
2019/07/18 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
Java程序员综合测试题
2014/04/25 面试题
竞选文艺委员演讲稿
2014/04/28 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
申报材料格式
2014/12/30 职场文书
英文感谢信范文
2015/01/21 职场文书
同意转租证明
2015/06/24 职场文书
2016新年感言
2015/08/03 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server