jQuery结合CSS制作漂亮的select下拉菜单


Posted in Javascript onMay 03, 2015

我们在进行表单设计时,可能要用到select下拉选项控件,遗憾的是,IE浏览器默认的select控件外观非常丑陋,而且不能用样式来控制,不能在选项中添加图片等信息。今天我将通过实例来讲解如何用CSS和jQuery来制作漂亮的下拉选项菜单。

XHTML

<div id="dropdown"> 
  <p>请选择城市</p> 
  <ul> 
    <li><a href="#">长沙</a></li> 
    <li><a href="#">北京</a></li> 
    <li><a href="#">南京</a></li> 
    <li><a href="#">堪培拉</a></li> 
    <li><a href="#">多伦多</a></li> 
  </ul> 
</div>

可以看出,我们使用div来替换下拉选项控件原生的select标签。
CSS

#dropdown{width:186px; margin:80px auto; position:relative} 
#dropdown p{width:150px; height:24px; line-height:24px; padding-left:4px; padding-right:30px; 
border:1px solid #a9c9e2; background:#e8f5fe url(arrow.gif) no-repeat right 4px; 
color:#807a62; cursor:pointer} 
#dropdown ul{width:184px; background:#e8f5fe; margin-top:2px; border:1px solid #a9c9e2; 
position:absolute; display:none} 
#dropdown ul li{height:24px; line-height:24px; text-indent:10px} 
#dropdown ul li a{display:block; height:24px; color:#807a62; text-decoration:none} 
#dropdown ul li a:hover{background:#c6dbfc; color:#369}

样式不要多讲,你可以修改CSS中的背景色和字体颜色,甚至其他任意定义的样式。有一个下拉箭头的小图标,已经打包在附件里了。
jQuery
首先,当单击“请选择城市”时,判断下拉的层“ul”是否处于显示状态,如果是则隐藏下拉选项,否则则打开(下滑)下拉选项

$("#dropdown p").click(function(){ 
  var ul = $("#dropdown ul"); 
  if(ul.css("display")=="none"){ 
    ul.slideDown("fast"); 
  }else{ 
    ul.slideUp("fast"); 
  } 
});

然后,当单击下拉选项时,获取选项内容,将选项内容写入到<p>标签中,同时隐藏下拉选项。

$("#dropdown ul li a").click(function(){ 
  var txt = $(this).text(); 
  $("#dropdown p").html(txt); 
  $("#dropdown ul").hide(); 
});

这样就完成了一个简单的下拉选项的操作,是不是很简单啊。
当然,如果与后台交互,需要获取选项的value值,那就需要先定义XHTML。

<div id="dropdown"> 
  <p>请选择城市</p> 
  <ul> 
    <li><a href="#" rel="1">长沙</a></li> 
    <li><a href="#" rel="2">北京</a></li> 
    <li><a href="#" rel="3">南京</a></li> 
    <li><a href="#" rel="4">堪培拉</a></li> 
    <li><a href="#" rel="5">多伦多</a></li> 
  </ul> 
</div> 
<div id="result"></div>

从代码中可以看出,在给a标签加个rel属性,并赋值,就相当于select的option标签的value值。接下来就是通过jQuery获取rel值,请看代码:

$("#dropdown ul li a").click(function(){ 
  var txt = $(this).text(); 
  $("#dropdown p").html(txt); 
  var value = $(this).attr("rel"); 
  $("#dropdown ul").hide(); 
  $("#result").html("您选择了"+txt+",值为:"+value); 
});

这样就完成了一个完整的下拉选项的操作。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
有关于JS辅助函数inherit()的问题
Apr 07 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
Javascript实现单张图片浏览
Dec 18 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
javascript实现根据3原色制作颜色选择器的方法
Jul 17 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
Dec 23 Javascript
在vue项目中安装使用Mint-UI的方法
Dec 27 Javascript
基于js Canvas实现二次贝塞尔曲线
Dec 25 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
Apr 18 Javascript
JavaScript 语句之常用 for 循环详解
Mar 29 Javascript
jQuery实现的向下图文信息滚动效果
May 03 #Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 #Javascript
JQuery页面地址处理插件jqURL详解
May 03 #Javascript
jQuery的animate函数实现图文切换动画效果
May 03 #Javascript
php+ajax+jquery实现点击加载更多内容
May 03 #Javascript
jquery插件hiAlert实现网页对话框美化
May 03 #Javascript
javascript结合canvas实现图片旋转效果
May 03 #Javascript
You might like
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php之Memcache学习笔记
2013/06/17 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
jQuery 1.0.2
2006/10/11 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
python实现画一颗树和一片森林
2018/06/25 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
python实现自动登录
2018/09/17 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python实现FTP循环上传文件
2020/03/20 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
周年庆典邀请函范文
2014/01/24 职场文书
促销活动总结模板
2014/07/01 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
超市员工辞职信范文
2015/05/12 职场文书
公司老总年会致辞
2015/07/30 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android