jQuery 制作美化版的 select 下拉选框
2015-11-04 17:39
726 查看
jQuery 制作美化版的 select 下拉选框
前言
在web前端工作中,总有一些东西是你搞不定的,比如 select 。原生的这玩意儿难看咱就不说了,关键是,在各个浏览器里面的表现形式那是千差万别啊。所以,我们在日常的工作中,总是尝试去美化它。我烦了。所以,我决定写一段js来彻底解决这个问题。
思路
用 input 文本框来传值。禁止其输入功能。
用 ul li 来模拟下拉菜单。
用 data 来模拟 value
开干
html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>FengSelect.jquery Demo</title> <link rel="stylesheet" href="style/FengSelect.css"> <script src="/Public/jquery/jquery.js"></script> <script src="js/FengSelect.js"></script> </head> <body> <div class="web"> <form action=""> <label class="fengselect"> <input type="text" name="love" placeholder="请选择你要的参数"> <ul> <li data-value="1">参数1</li> <li data-value="2">参数2</li> <li data-value="3">参数3</li> <li data-value="4">参数4</li> <li data-value="5">参数5</li> <li data-value="6">参数6</li> <li data-value="7">参数7</li> <li data-value="8">参数8</li> <li data-value="9">参数9</li> <li data-value="10">参数10</li> </ul> </label> <label class="fengselect"> <input type="text" name="sex" placeholder="请选择你要的参数"> <ul> <li data-value="1">参数1</li> <li data-value="2">参数2</li> <li data-value="3">参数3</li> <li data-value="4">参数4</li> <li data-value="5">参数5</li> <li data-value="6">参数6</li> <li data-value="7">参数7</li> <li data-value="8">参数8</li> <li data-value="9">参数9</li> <li data-value="10">参数10</li> </ul> </label> <label class="fengselect"> <input type="text" name="age" placeholder="请选择你要的参数"> <ul> <li data-value="1">参数1</li> <li data-value="2">参数2</li> <li data-value="3">参数3</li> <li data-value="4">参数4</li> <li data-value="5">参数5</li> <li data-value="6">参数6</li> <li data-value="7">参数7</li> <li data-value="8">参数8</li> <li data-value="9">参数9</li> <li data-value="10">参数10</li> </ul> </label> <label class="fengselect"> <input type="text" name="test" placeholder="请选择你要的参数"> <ul> <li data-value="1">参数1</li> <li data-value="2">参数2</li> <li data-value="3">参数3</li> <li data-value="4">参数4</li> <li data-value="5">参数5</li> <li data-value="6">参数6</li> <li data-value="7">参数7</li> <li data-value="8">参数8</li> <li data-value="9">参数9</li> <li data-value="10">参数10</li> </ul> </label> <select name="select"> <option value="1">参数1</option> <option value="2">参数2</option> <option value="3">参数3</option> <option value="4">参数4</option> <option value="5">参数5</option> <option value="6">参数6</option> <option value="7">参数7</option> <option value="8">参数8</option> <option value="9">参数9</option> <option value="10">参数10</option> </select> <input type="submit" value="提交"> </form> </div> </body> </html>
scss
@import url("/Public/style/reset.css"); .fengselect { position: relative;width: 130px; input {height: 16px;padding: 8px;border: 1px solid #ddd;border-radius: 3px;outline: none;width: 112px;} ul { position: absolute;width: 118px;padding: 5px;border: 1px solid #ddd;border-radius: 3px;background: #fafafa; li { cursor: pointer; &:not(:last-child) {border-bottom: 1px solid #ddd;} } } }
javascript
$(function(){ var FengSelect = $(".fengselect"); FengSelect.each(function(){ var t = $(this), inp = t.find('input'), optBox = t.find('ul'), opt = t.find('li'); inp.attr('readonly', 'readonly'); optBox.hide(); t.hover(function() { optBox.stop().slideDown(); }, function() { optBox.stop().slideUp(); }); t.on("click","li",function(){ var value = $(this).data('value'); inp.val(value); }) }); })
总结
在jquery中,我以前一直用
children而避免用
find因为我 认为 寻找子集,比寻找所有的子孙元素要快。近日看到一篇文章,说
find是原生方法 ,是比
children的效率要搞的。
执行下一个动画之前,一定要
.stop()上一个动画。
input使用
readonly之后,是可以继续传值的。而使用了
disabled之后,是没办法传值的。
其他
在线演示:http://runjs.cn/detail/kwfsoab4css 部分,完全可以随你去自定义,我写的只是一个草稿,用来演示效果而已。
html结构如下:
<label class="fengselect"> <input type="text" name="test" placeholder="请选择你要的参数"> <ul> <li data-value="1">参数1</li> <li data-value="2">参数2</li> </ul> </label>
input 和 ul 元素,存与 class 为 fengselect 的 label 下。li 来写值和显示值。
JS部分,只要复制到页面里面,或者直接引用就可以了。
相关文章推荐
- 【PC端】jQuery+PHP实现浏览更多内容(jquery.more.js插件)
- 【PC端】jQuery+PHP实现浏览更多内容(jquery.more.js插件)
- jQuery官方教程之频繁被问的问题汇总
- 关于jQuery中的$.ajax()使用过程中的一些感悟
- jquery源码分析
- jquery事件绑定
- 最近遇到的若干Web前端问题:disable和readonly,JqueryEasyUI,KindEditor
- 最近遇到的若干Web前端问题:disable和readonly,JqueryEasyUI,KindEditor
- 最近遇到的若干Web前端问题:disable和readonly,JqueryEasyUI,KindEditor
- jQuery全屏滚动插件fullPage.js
- jquery格式化时间戳 2011-01-01
- 介绍Web项目中用到的几款JQuery消息提示插件
- jQuery的$(window).load与、(document).ready和window.onload的关系
- jQuery克隆DOM节点
- jQuery(function(){})与(function(){})(jQuery)之间的区别
- jquery遮罩
- Ruby on Rails中jquery_ujs组件拖慢速度的问题解决
- jquery绑定事件时如何传递参数
- Jquery的各个版本链接及下载
- jQuery:35个技巧