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 相关文章推荐
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
jquery+css3打造一款ajax分页插件(自写)
Jun 18 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
Node.js的文件权限及读写flag详解
Oct 11 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
Webpack实现按需打包Lodash的几种方法详解
May 08 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 Javascript
Vue使用NPM方式搭建项目
Oct 25 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乱码问题
2012/03/25 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php单一接口的实现方法
2015/06/20 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
python学生管理系统
2019/01/30 Python
python修改文件内容的3种方法详解
2019/11/15 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
公司员工的自我评价范例
2013/11/01 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
核心价值观演讲稿
2014/05/13 职场文书
竞聘自述材料
2014/08/25 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript