jQuery模拟实现的select点击选择效果【附demo源码下载】


Posted in Javascript onNovember 09, 2016

本文实例讲述了jQuery模拟实现的select点击选择效果。分享给大家供大家参考,具体如下:

有时候有些HTML元素无法让我们用样式控制进行控制,但是射鸡师或是客户的需求就是需要这种效果,还要让每个浏览器都显示同样的效果,这时候就会让我们这些所谓的前端攻城师很蛋疼,客户会认为交了点钱不让你折腾些东西,以为你是没做事的。面对这些对技术一窍不通的客户,技术对于他们来说就是一坨屎,以为我们都是用意念来写代码做程序的,所以都把我们的劳动成果看作是廉价得像是简单的拉出一泡屎而已。

虽然很喜欢什么都没有修饰的默认效果,但是又不得不面对这些客户蛋疼的效果和要求,所以不得不折腾几个来回总不满足,HTML里面,不可以样式控制的元素恐怕也为数不多,select是其中的一个,,所以今天也来折腾一下这个比较喜欢自由不爱样式约束的元素,采用模拟的方式来实现select的效果。

采用模拟的好处可以任意的进行样式控制,做出各种各样的效果,在各个浏览器中的表现都一致,实现客户蛋疼的要求,但缺点也是同样的存在的,网络非常慢或客户端禁止运行脚本的时候//(尽管脚本禁止运行的机率很低,一般只会有服务器版本的浏览器上才会出现),脚本加载不到有可能会影响到其失效,无法进行操作,

其实这个效果早已广泛应用,也不算什么新鲜的了,大家可以随便看一下比较新一点的网站都能找到,下面分别是淘宝和拍拍上也采用模拟的select的截图。

淘宝模拟select:

jQuery模拟实现的select点击选择效果【附demo源码下载】

拍拍模拟select:

jQuery模拟实现的select点击选择效果【附demo源码下载】

本例实现效果:

jQuery模拟实现的select点击选择效果【附demo源码下载】

实现的思路很简单,只有两步:

1、当鼠标进行移入和点击的目标元素的时候,触发弹出一个层,层内装着模拟的不同的元素的值

2、点击选择层内的元素的时候,需要将点击元素文本元素赋到目标元素中,并将元素内的一些参数值传到一个隐藏的域中进行传值

于是就有了以下的HTML、CSS和操作JS:

html:

<span class="selectType">
  <a title="" href="#" class="ipt" id="selectTypeText">全部</a>
  <span id="selectTypeMenu">
    <a rel="0" title="" href="#">全部</a>
    <a rel="1" title="" href="#">商品</a>
    <a rel="2" title="" href="#">商铺</a>
  </span>
  <input type="hidden" name="" class="ipt" value="" id="selectTypeRel">
  <em class="searchArrow hh abs">下拉选择</em>
</span>

css:

.sysSelect{width:76px; height:28px; line-height:28px; border:1px solid #CCC; font-size:14px;}
.sysSelect option{height:28px; line-height:28px;}
.selectType{position:relative; width:78px; height:30px; line-height:30px; font-size:14px;}
.selectType .ipt{width:76px; height:28px; line-height:28px; border:1px solid #CCC; display:inline-block; text-decoration:none; color:#000; text-indent:5px; outline:none;}
.selectType span{position:absolute; width:76px; background-color:#fff; border:1px solid #CCC; border-top-style:dashed; left:0px; top:22px; text-indent:6px; line-height:26px; display:none;}
.selectType span a{color:#333; display:block; text-decoration:none;}
.selectType span a:hover{background-color:#f60; color:#fff;}
.selectType .searchArrow{border-top:6px solid #666; border-left:6px solid #FFF; border-right:6px solid #FFF; position:absolute; width:0; height:0; top:6px; right:12px; cursor:pointer; -webkit-transition:-webkit-transform 0.2s ease-in; -moz-transition:-moz-transform 0.2s ease-in; -o-transition:-o-transform 0.2s ease-in; transition:transform 0.2s ease-in; overflow:hidden; text-indent:-2000px;}
.selectType .searchArrowRote{-moz-transform:rotate(180deg); -moz-transform-origin:50% 30%; -webkit-transform:rotate(180deg); -webkit-transform-origin:50% 30%; -o-transform:rotate(180deg); -o-transform-origin:50% 30%; transform:rotate(180deg);transform-origin:50% 30%; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); top:-9px/9;}

js:

$("#selectTypeText").click(function () {
  $(this).next("span").slideDown(200);
  $(".searchArrow").addClass("searchArrowRote");
});
$("#selectTypeText").blur(function () {
   $(this).next("span").slideUp(200);
   $(".searchArrow").removeClass("searchArrowRote");
});
$("#selectTypeMenu>a").click(function () {
  $("#selectTypeText").text($(this).text());
  $("#selectTypeRel").attr("value", $(this).attr("rel"));
  $(this).parent().slideUp(200);
  $(".searchArrow").removeClass("searchArrowRote");
  return false;
});

你是否还期待着我的长篇大论?但很遗憾的告诉你,说明已经完毕了,也就是这么简单了,几行代码一看也就明白了。

还有不明白的?那没问题,请看DEMO,点击此处打开

完整demo源码点击此处本站下载

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
js Html结构转字符串形式显示代码
Nov 15 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
javascript截取字符串小结
Apr 28 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
JavaScript中匿名函数的递归调用
Jan 22 Javascript
Map.vue基于百度地图组件重构笔记分享
Apr 17 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
react native 仿微信聊天室实例代码
Sep 17 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
微信小程序 loading 详解及实例代码
Nov 09 #Javascript
微信小程序 toast 详解及实例代码
Nov 09 #Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
Nov 09 #Javascript
微信小程序  modal详解及实例代码
Nov 09 #Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 #Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 #Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 #Javascript
You might like
用PHP和MySQL保存和输出图片
2006/10/09 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
php之可变变量的实例详解
2017/09/12 PHP
jquery鼠标停止移动事件
2013/12/21 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
Python中int()函数的用法浅析
2017/10/17 Python
如何使用python操作vmware
2019/07/27 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
美术指导助理求职信
2014/04/20 职场文书
设计顾问服务计划书
2014/05/04 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
高三数学教学反思
2016/02/18 职场文书
Python Pandas 删除列操作
2022/03/16 Python
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers