基于jquery的网页SELECT下拉框美化代码


Posted in Javascript onOctober 28, 2010

1.解决了有些select 美化代码,无法触发原有select 控件的onchange 事件问题。
2.允许多次调用 $("...").selectCss(),以解决Select的options更新后无法同步的问题。

使用方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>无标题文档</title> 
<link href="selectCss.css" rel="stylesheet" type="text/css" /> 
<script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
<script src="selectCss.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("select").selectCss(); 
}); 
</script> 
</head> 
<body> 
<select name="" onchange="alert(this.value)" id="select1"> 
<option value="1" title="选项选项选项选项" >选项1</option> 
<option value="2">选项2</option> 
<option value="3">选项3</option> 
</select> 
<select name="" id="select2"> 
<option value="1">选项31</option> 
<option value="2">选项32</option> 
<option value="3">选33</option> 
</select> 
</body> 
</html>

主要文件包括 selectCss.css 和 selectCss.js
selectCss.js 文件代码:
(function($){ 
function hideOptions(speed){ 
if(speed.data){speed=speed.data} 
if($(document).data("nowselectoptions")) 
{ 
$($(document).data("nowselectoptions")).slideUp(speed); 
$($(document).data("nowselectoptions")).prev("div").removeClass("tag_select_open"); 
$(document).data("nowselectoptions",null); 
$(document).unbind("click",hideOptions); 
$(document).unbind("keyup",hideOptionsOnEscKey); 
} 
} 
function hideOptionsOnEscKey(e){ 
var myEvent = e || window.event; 
var keyCode = myEvent.keyCode; 
if(keyCode==27)hideOptions(e.data); 
} 
function showOptions(speed){ 
$(document).bind("click",speed,hideOptions); 
$(document).bind("keyup",speed,hideOptionsOnEscKey); 
$($(document).data("nowselectoptions")).slideDown(speed); 
$($(document).data("nowselectoptions")).prev("div").addClass("tag_select_open"); 
} $.fn.selectCss=function(_speed){ 
$(this).each(function(){ 
var speed=_speed||"fast"; 
if($(this).data("cssobj")){ 
$($(this).data("cssobj")).remove(); 
} 
$(this).hide(); 
var divselect = $("<div></div>").insertAfter(this).addClass("tag_select"); 
$(this).data("cssobj",divselect); 
var divoptions = $("<ul></ul>").insertAfter(divselect).addClass("tag_options").hide(); 
divselect.click(function(e){ 
if($($(document).data("nowselectoptions")).get(0) != $(this).next("ul").get(0)){ 
hideOptions(speed); 
} 
if(!$(this).next("ul").is(":visible")) 
{ 
e.stopPropagation(); 
$(document).data("nowselectoptions",$(this).next("ul")); 
showOptions(speed); 
} 
}); 
divselect.hover(function(){ 
$(this).addClass("tag_select_hover"); 
} 
, 
function(){ 
$(this).removeClass("tag_select_hover"); 
}); 
$(this).change(function(){ 
$(this).nextAll("ul").children("li:eq("+ $(this)[0].selectedIndex +")").addClass("open_selected").siblings().removeClass("open_selected"); 
$(this).next("div").html($(this).children("option:eq("+ $(this)[0].selectedIndex +")").text()); 
}); 
$(this).children("option").each(function(i){ 
var lioption= $("<li></li>").html($(this).text()).attr("title",$(this).attr("title")).appendTo(divoptions); 
if($(this).attr("selected")){ 
lioption.addClass("open_selected"); 
divselect.html($(this).text()); 
} 
lioption.data("option",this); 
lioption.click(function(){ 
lioption.data("option").selected=true; 
$(lioption.data("option")).trigger("change",true) 
}); 
lioption.hover( 
function(){$(this).addClass("open_hover");}, 
function(){ $(this).removeClass("open_hover"); } 
); 
}); 
}); 
} 
})(jQuery);

selectCss.Css 文件代码:
.tag_select{display:block;color:#000;width:179px;height:23px;background:transparent url("images/index_22.jpg") no-repeat 0 0;padding:0 10px;line-height:23px; color:#7D7D7D; font-size:12px; cursor:pointer} 
.tag_select_hover{ color:#ff0000; background:transparent url("selectbg.jpg") no-repeat 0 0; } 
.tag_select_open{ color:#0000ff; background:transparent url("selectbg.jpg") no-repeat 0 0;} 
ul.tag_options{position:absolute;margin:0;list-style:none;background:#fff;padding:0 0 1px;margin:0;width:162px ; height:100px; overflow:hidden; overflow-y:auto; font-size:12px; margin-left:10px; cursor:pointer; z-index:1000 } 
ul.tag_options li{background:#fff; display:block;width:140px;padding:0 10px;height:20px;text-decoration:none;line-height:20px;color:#000; font-weight:normal; font-size:12px} 
ul.tag_options li.open_hover{background:#0000ff;color:#000; font-weight:normal; font-size:12px} 
ul.tag_options li.open_selected{background:#ccc; font-size:12px;font-weight:bold; }

selectbg.jpg 图片:
基于jquery的网页SELECT下拉框美化代码
Javascript 相关文章推荐
js 动态选中下拉框
Nov 26 Javascript
js实现单一html页面两套css切换代码
Apr 11 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
Mar 04 Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
通过命令行创建vue项目的方法
Jul 20 Javascript
Ionic3实现图片瀑布流布局
Aug 09 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
jQuery编写widget的一些技巧分享
Oct 28 #Javascript
jQuery timers计时器简单应用说明
Oct 28 #Javascript
jquery ajax abort()的使用方法
Oct 28 #Javascript
BOM与DOM的区别分析
Oct 26 #Javascript
js下判断 iframe 是否加载完成的完美方法
Oct 26 #Javascript
Javascript下判断是否为闰年的Datetime包
Oct 26 #Javascript
基于jquery的给文章加入关键字链接
Oct 26 #Javascript
You might like
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
php getsiteurl()函数
2009/09/05 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
详解python算法之冒泡排序
2019/03/05 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
python输入中文的实例方法
2020/09/14 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
十佳美德少年事迹材料
2014/02/05 职场文书
工程专业应届生求职信
2014/02/19 职场文书
大学军训感言600字
2014/02/25 职场文书
激励员工的口号
2014/06/16 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis