select下拉样式重置(html+css+jquery)

HTML(一定要引用jquery才可以哦)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>下拉重置</title>
<link href="css/main.css" rel="stylesheet">
</head>

<body>
	<form action="#" >	
        <div style="width:190px; display:inline-block">
            <select name="status" id="status" class="i-select">
                <option value="" selected>商品状态</option>
                <option value="1">上架</option>
                <option value="2">下架</option>
            </select>
        </div>
    	<input type="submit" value='提交表单'/>
    </form>
    <script src="js/jquery-2.1.1.min.js"></script>
	<script type="text/javascript" src="js/my.js"></script>
</body>
</html>

CSS

.form-select{position:relative;}
.i-select{display:none;}
.form-select .sel-edge{position: absolute;  right: 10px;  top: 50%;  margin-top: -3px;  cursor: pointer;  border-width: 6px;  border-top-color: #c2c2c2;  border-top-style: solid;  transition: all .3s;  -webkit-transition: all .3s;}
.form-selected .sel-edge{margin-top: -9px; -webkit-transform: rotate(180deg); transform: rotate(180deg);}
.sel-edge{display: inline-block; width: 0; height: 0; border-width: 6px; border-style: dashed;  border-color: transparent; overflow: hidden; vertical-align: middle;}
.sel-input{border-color: #e6e6e6;display: block; width: 100%; padding-left: 10px;}
.form-select .sel-input{ cursor: pointer;}
.sel-input{height: 38px; line-height:38px; border:1px solid #e6e6e6;  background-color: #fff;  border-radius: 2px;}
.sel-input:hover{border-color: #D2D2D2!important;}

.form-select.form-selected dl{display: block;}
.form-selectup dl{top: auto; bottom: 42px;}
.form-select dl{display: none; position: absolute; left: 0; top: 35px; padding: 5px 0; z-index: 899; min-width: 100%;  border: 1px solid #d2d2d2;  max-height: 300px; overflow-y: auto; background-color: #fff; border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.12); box-sizing: border-box;}
.form-select dl dd{cursor: pointer; padding: 0 10px; line-height: 36px; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis; margin:0}
.form-select dl dd:hover{background-color: #f2f2f2;}
.form-select dl dd.select-tips{padding-left: 10px!important; color: #999;}
.form-select dl dd.select_checked{background-color: #5FB878; color: #fff;}

JS(my.js)

$().ready(function(e) {
	selectFun();
});
function selectFun(){	
	$(document).on("click",".select-title",function(e){
		$(".form-select").removeClass("form-selected");
		$(this).parent().toggleClass("form-selected");
	});		
	$(document).on("click",".form-select dl dd",function(){
		var classN  = $(this).attr("class");
		var val  = $(this).attr("data-val");
		var text  = $(this).text();
		var input = $(this).parent().prev(".select-title").find("input");
		var ind = $(this).index();
		if(val == ""){
			input.val("");
		}else{
			input.val(text);
		}
		$(this).addClass("select_checked").siblings().removeClass("select_checked");
		$(this).closest(".form-select").toggleClass("form-selected");
		//同步select的值
		$(this).parents(".form-select").prev().children("option").removeAttr("selected");
		$(this).parents(".form-select").prev().children("option").eq(ind).attr("selected","selected");
	});
	
	$(document).mouseup(function(e){
		var _con = $(".form-select");
		if(!_con.is(e.target) && _con.has(e.target).length === 0){
			$(".form-select").removeClass("form-selected");
		}
	});
	$(".i-select").each(function(index, element) {
		var opt = {};
		var selectOpt = []
		var checked_txt = "";
		var placeholder = "";
		
		$(this).children("option").each(function(index, element) {				
			opt[$(this).text()] = $(this).val();
			var text = $(this).text();				
			var value = $(this).val();
			var checked = false;
			
			if($(this).attr("selected")){
				checked = true;				
				if(value == ""){
					checked_txt = "";
				}else{
					checked_txt = text;	
				}
			}
			selectOpt.push(
				{
					text: text,
					value: value,
					selected: checked
				}
			)
			if(index==0){//获取placeholder文字
				placeholder = $(this).text();	
			}
		});
		//循环
		var optList = "";
		$.each(selectOpt, function(index, val) {
			if(index==0){
				optList =  optList +'<dd data-val="'+val.value+'" class="select-tips">'+val.text+'</dd>'
			}else{
				if(val.selected){
					optList =  optList +'<dd data-val="'+val.value+'" class="select_checked">'+val.text+'</dd>';
				}else{
					optList =  optList +'<dd data-val="'+val.value+'">'+val.text+'</dd>'
				}
			}
		});
		$(".i-select").parent().append('<div class="form-select">\
			  <div class="select-title">\
				  <input type="text" placeholder="'+placeholder+'" value="'+checked_txt+'" readonly="" class="sel-input">\
				  <i class="sel-edge"></i>\
			  </div>\
			  <dl>'+optList+'</dl>\
		  </div>');
	});
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值