在写项目中 用到下拉框,一般用
<select name="" id=""> <option value="">1</option> <option value="">2</option> <option value="">3</option> </select>
但是select 在不同的浏览器中 样式有些差别,所以用 ul li 来模拟select 的功能。
<div class="model-select-box"> <div class="model-select-text" value=""> 请选择:</div> <b class="bg1"></b> <ul class="model-select-option"> <li data-option="1" class="selected">查设备</li> <li data-option="2">查链路</li> <li data-option="3">查光缆</li> </ul> </div>
$(function () { /* * 模拟网页中所有的下拉列表select */ function selectModel() { var $box = $('div.model-select-box'); var $option = $('ul.model-select-option', $box); var $txt = $('div.model-select-text', $box); var speed = 10; var $bg = $('b.bg1',$box) // 点击小三角 $bg.click(function(){ $option.not($(this).siblings('ul.model-select-option')).slideUp(speed, function () { }); $(this).siblings('ul.model-select-option').slideToggle(speed, function () { // int($(this)); }); return false; }) /* * 单击某个下拉列表时,显示当前下拉列表的下拉列表框 * 并隐藏页面中其他下拉列表 */ $txt.click(function (e) { $option.not($(this).siblings('ul.model-select-option')).slideUp(speed, function () { }); $(this).siblings('ul.model-select-option').slideToggle(speed, function () { // int($(this)); }); return false; }); //点击选择,关闭其他下拉 /* * 为每个下拉列表框中的选项设置默认选中标识 data-selected * 点击下拉列表框中的选项时,将选项的 data-option 属性的属性值赋给下拉列表的 data-value 属性,并改变默认选中标识 data-selected * 为选项添加 mouseover 事件 */ $option.find('li').each(function(index,element){ // console.log($(this) + '1'); if($(this).hasClass('selected')){ $(this).parent('.model-select-option').siblings('.model-select-text').text($(this).text()) } $(this).mousedown(function(){ $(this).parent().siblings('div.model-select-text').text($(this).text()) .attr('value', $(this).attr('data-option')); $option.slideUp(speed, function () { }); $(this).addClass('selected').siblings('li').removeClass('selected'); return false; }) $(this).on('mouseover',function(){ $(this).addClass('selected').siblings('li').removeClass('selected'); }) }) //点击文档,隐藏所有下拉 $(document).click(function (e) { $option.slideUp(speed, function () { }); }); } selectModel(); })
* { margin: 0; padding: 0; } body { font: 14px '微软雅黑'; color: #555; padding: 50px; } ul { list-style: none; } .model-select-box { width: 100px; height: 34px; line-height: 34px; border: 1px solid #000; float: left; margin-right: 20px; text-indent: 5px; position: relative; font-size: 18px; box-sizing: border-box } .model-select-text { height: 34px; padding-right: 27px; cursor: pointer; /* -moz-user-select: none; -webkit-user-select: none; user-select: none; */ } .model-select-option { display: none; position: absolute; background: #fff; width: 100%; left: -1px; border: 1px solid #000; } .model-select-option li { height: 30px; line-height: 30px; color: #000; cursor: pointer; } .model-select-option li.selected { background: #06C; color: #fff; } /* 小三角 */ .bg1{ position: absolute; top:12px; right:5px; border-width: 6px; border-style: solid; border-color: #000 transparent transparent transparent; }