JQuery美化下拉框插件

2023-10-31

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JQuery下拉框组件</title>
<style type="text/css">
body{font: 12px/1.231 "微软雅黑",Verdana,"宋体",sans-serif; }

.ui-select
{ 
	display:inline-block;	
	font: 12px/1.231 "微软雅黑",Verdana,"宋体",sans-serif;
	border:#bbb solid 1px;
	border-radius: 3px;
	background-image: -webkit-gradient(linear,left top,left bottom,from(#ffffff),to(#efefef));
	background-image: -moz-linear-gradient(top,#ffffff,#efefef);
	background-image: -webkit-gradient(linear,left top,left bottom,from(#ffffff),to(#efefef));
	filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr=#ffffff,endColorStr=#efefef);
	cursor: pointer;	
	vertical-align: top;
	zoom:1;
	_height:25px;
}

.ui-select:hover{ box-shadow:#bbb 0px 0px 2px; }
.ui-select .default{line-height:20px; padding:2px 5px; overflow:hidden; display:block; zoom:1;}
.ui-select .default span{ float:left; }
.ui-select .default label{ font-size:10px; padding-left:3px; border-left:#bbb solid 1px; margin-left:6px; font-weight:700; float:right;}
.ui-select ul
{
	margin:0;
	padding:0; 
	list-style:none; 
	position:absolute; 
	display:block;
	border:#bbb solid 1px; 
	margin-left:-1px; 
	line-height:22px;
	border-bottom-right-radius: 3px 3px;
	border-bottom-left-radius: 3px 3px;
	text-align:left;
	background:#fff;
	display:none;
}
.ui-select li{ text-indent: 5px;}
.ui-select li:hover , .ui-select li.active{ background:#0bF; color:#fff;}
</style>
<script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<script>
/**
 * 使用说明:
 * 需要引人 ui-select.css
 * 使用方法一:
 * html:
 *	<select name="sex" >
 *		<option value="1">man</option>
 *		<option value="2">woman</option>
 *	</select>
 * js:
 * $('select').select();
 *
 * 使用方法二:从网络中加载数据
 * $('select').select({url:'1.jsp'});
 *
 */
(function($){

	$.fn.select = function(options){
		//定义常量
		var settings = $.extend({},options);
		
		this.each(function() {
			//html template
			var $html = $('<span class="ui-select"><span class="default"><label>▼</label><span></span></span><ul></ul></span>');
			//将下拉框隐藏,把模版插入其后
			var $this = $(this).hide().after($html);
			//声明全局变量
			var $list = $html.find('ul'),$default = $html.find('.default'),$span = $default.find('span'),$label = $default.find('label');
			//从网络加载数据
			if(settings.url){
				$.ajax({
					url: settings.url,
					dataType:'json',
					async : false,
					success: function(data){
						//得到已经存在的option个数
						var size = $this.find('option').size();
						$.each(data,function(i,option){
							//由于ie6 的bug ,不得不采用原生的方式对DOM进行操作
							$this[0].options[i+size] = new Option(option.text,option.value);
						});
					}
				});
			}
			
			//将option遍历到li中
			$this.find('option').each(function(){
				var $option = $(this);
				$('<li val="'+$option.val()+'">'+$option.text()+'</li>').appendTo($list);

				if($option.prop('selected') === true){
					$this.val($option.val());
					$span.text($option.text());
				}
			});
			//计算下拉框宽度
			if($span.text() === ''){
				var $li = $list.find('li').first();
				$this.val($li.attr('val'));
				$span.text($li.text());
			}
			$span.width($list.width());
			//click 事件
			$default.width($span.outerWidth()+$label.outerWidth(true)).click(function(event){
				//阻止事件冒泡
				event.stopPropagation();
				if(!$list.find('li').size())
					return ;
				$list.slideToggle(200);
			});
			$html.width($default.outerWidth());
			$list.width($default.outerWidth());
			
			$list.find('li').click(function(){
				var $li = $(this);
				$span.text($li.text());
				if($this.val() != $li.attr('val'))
					$this.val($li.attr('val')).change();
			}).hover(function(){
				$(this).toggleClass('active');
			});
			
			$this.change(function(){
				var index = $this[0].selectedIndex,$li = $list.find('li:eq('+index+')');
				$span.text($li.text());
			});

			$(document).click(function(){
				$list.slideUp(200);
			});
		});
		return this;
	};
})(jQuery);


$(function(){
	$('select[name="sex"]').select();
	$('select[name="ttt"]').select({url:'/1.jsp'}).change(function(){
		alert(this.value);
	});
});

</script>
</head>

<body>
	<form action="?">
	<select name="sex" >
		<option value="1">man</option>
		<option value="2">woman</option>
	</select>
	fdsafdsafds
	<input type="submit" value="send"/>
	
	
	<select name="ttt" id="ttt" >
		<option value="t">测试</option>
		<option value="5" selected>测试2</option>
	</select>
	</form>
</body>
</html>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JQuery美化下拉框插件 的相关文章

随机推荐

  • 相机的信噪比

    在图像传感器的成像过程中 真实的信号是无法探测到的理想值 在成像过程中理想值被引入了一系列的不确定性 最终形成读出信号也即图像 此过程中的不确定性被统一称为噪声 而信号与噪声的比值被定义为信噪比 Signal to NoiseRatio S
  • hibernate: Duplicate class/entity; Could not parse mapping document from resource

    近日在学习Hibernate时 总是遇到以下异常 org hibernate InvalidMappingException Could not parse mapping document from resource kpy db Cus
  • ModelScope-Agent: Building Your Customizable Agent System with Open-source Large Language Models

    本文是LLM系列文章 针对 ModelScope Agent Building Your Customizable Agent System with Open source Large Language Models 的翻译 ModelS
  • 1072. 开学寄语(20)

    下图是上海某校的新学期开学寄语 天将降大任于斯人也 必先删其微博 卸其QQ 封其电脑 夺其手机 收其ipad 断其wifi 使其百无聊赖 然后 净面 理发 整衣 然后思过 读书 锻炼 明智 开悟 精进 而后必成大器也 本题要求你写个程序帮助
  • Webpack 基础配置介绍(二)

    今天继续分享webpack的有关内容 我还是接着从上篇文章的项目来给大家分享后续内容 如果还有小伙伴没有阅读之前的文章 请关注博主进行阅读 今日分享 1 webpack的规范配置 2 webpack config js基础配置 3 单页开发
  • JSP+ssm计算机毕业设计考研资源共享平台设计与实现399xv【源码、数据库、LW、部署】

    项目运行 项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEcl
  • 环境变量路径中有空格该怎么办?

    本机环境变量的设置 java home C Program Files Java jdk1 5 0 09 bat中的命令格式 java home bin java 或者 C Program Files Java jdk1 5 0 09 bi
  • Python、Matplot的subplot实现一行3列的子图绘制,并添加背景色

    Python Matplot的subplot实现一行3列的子图绘制 并添加背景色 1 可能遇到的问题 2 示例 1 绘制2 2 俩行俩列 的子图 并设置背景色 2 绘制1 3 一行三列 的子图 并设置横轴纵轴值 3 绘制1 3 一行三列 的
  • 记一次kafka Consumer线程停止消费过程分析

    前言 kafka消息队列在项目开发中经常被使用 尤其是在大数据领域经常见到它的身影 spring集成了kafka方便我们使用 只要引入spring kafka即可 问题描述 有一天我们后台版本发布 虽然改动很大 但是大家还是自信满满 因为经
  • Spring Boot中使用WebSocket [第三部分]

    使用消息队列实现分布式WebSocket 在上一篇文章 https www zifangsky cn 1359 html 中我介绍了服务端如何给指定用户的客户端发送消息 并如何处理对方不在线的情况 在这篇文章中我们继续思考另外一个重要的问题
  • PTA自测-1 打印沙漏 python实现

    本题要求你写个程序把给定的符号打印成沙漏的形状 例如给定17个 要求按下列格式打印 所谓 沙漏形状 是指每行输出奇数个符号 各行符号中心对齐 相邻两行符号数差2 符号数先从大到小顺序递减到1 再从小到大顺序递增 首尾符号数相等 给定任意N个
  • 前端接收后端返回换行符 /n 不生效

    问题 前端接收后端返回换行符 n 不换行 不生效 解决方案 一 设置css的white space属性 div class text container text div export default data return text 这是
  • StackOverflow 第四周周报及19年就业情况分析

    这是 Stack Overflow 第四周周报 两篇 Java 两篇 Python 公众号 渡码 为日更 欢迎关注 另外 我搜集了今年的就业数据 对招聘情况和岗位情况做了简单总结 想了解的朋友点这里 DAY1 枚举对象 和 equals 区
  • TypeError: can only concatenate str (not “int“) to str

    看见报的错误我们可以发现大致的错误 首先要做的是先梳理一下代码整体的思路 确保思路没有问题 然后再断点调试 每个步骤的打印也可以 这样可以很好的得到每个阶段所获得的值 定位错误 然后就是针对错误进行解决 简而言之就是报错解决的范围太泛了 太
  • 【自然语言处理】Transformer 讲解

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 自然语言处理 Seq2Seq 讲解 自然语言处理 Attention 讲解 Transformer 为了讲解更加清晰 约定 预测阶段 被称为 推断阶段 in
  • cubemx hal stm32 舵机 可减速 任意位置停止 驱动代码

    CubeMX配置 对于 STM32 F407VE 这里的84是来自APB1那路2倍频得到 代码部分 两个舵机都是180度的 servo c include servo h include tim h include stdio h IO u
  • css补充2:flex布局,居中方案等

    一 flex 布局 1 1 flex布局原理 flex是flexible Box的缩写 意为 弹性布局 用来为盒状模型提供最大的灵活性 任何一个容器都可以指定为flex布局 当我们为父盒子设为flex布局以后 子元素的float clear
  • 相似度计算

    在推荐系统中 最基础的一个概念就是计算相似度 很多的相似度都是基于距离计算出来的 计算距离的方法有很多种 包括 Euclidian Distance Pearson Correlation Cosine Similarity interse
  • 【华为OD机试真题2023B卷 JAVA&JS】模拟消息队列

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 模拟消息队列 知识点排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 让我们来模拟一个消息队列的运作 有一个发布者和若干消费者 发布者会在给定的时刻向消息队列发送消
  • JQuery美化下拉框插件