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 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
js字符编码函数区别分析
Dec 28 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 Javascript
AngularJS+Bootstrap实现多文件上传与管理
Nov 08 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
Angularjs 手写日历的实现代码(不用插件)
Oct 18 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
Vue结合后台导入导出Excel问题详解
Feb 19 Javascript
js事件触发操作实例分析
Jun 21 Javascript
JS实现纸牌发牌动画
Jan 19 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
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php实现图片缩略图的方法
2016/03/29 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
JS实现图片切换特效
2019/12/23 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python正则表达式使用范例分享
2016/12/04 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
使用python实现名片管理系统
2020/06/18 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
电气工程和自动化自荐信范文
2013/12/25 职场文书
服装店营销方案
2014/03/10 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle