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 相关文章推荐
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
iframe子父页面调用js函数示例
Nov 07 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
js的image onload事件使用遇到的问题
Jul 15 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
May 28 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
Ionic快速安装教程
Jun 03 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
Feb 22 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 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数据库连接
2006/10/09 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
jquery map方法使用示例
2014/04/23 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
react路由配置方式详解
2017/08/07 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
python合并文本文件示例
2014/02/07 Python
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
离婚被告代理词
2015/05/23 职场文书