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 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
javascript中直接写php代码的方法
Jul 31 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
Jun 17 Javascript
微信小程序 教程之模块化
Oct 17 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
微信小程序 slider的简单实例
Apr 19 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
Aug 31 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
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 读取文件内容代码(txt,js等)
2009/12/06 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Django实现单用户登录的方法示例
2019/03/28 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
优秀辅导员事迹材料
2014/02/16 职场文书
母亲节演讲稿
2014/05/27 职场文书
争做文明公民倡议书
2014/08/29 职场文书
会议营销主持词
2015/07/03 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
4种非常实用的python内置数据结构
2021/04/28 Python
JS实现数组去重的11种方法总结
2022/04/04 Javascript