zoukankan      html  css  js  c++  java
  • ul -- li 模拟select下拉框

    在写项目中 用到下拉框,一般用

     <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;
    }
    
    
  • 相关阅读:
    share point 已在此服务器场中安装 ID 为 15/b7a69889-1789-4855-b8bd-9a3b4cfd7fc0 的功能。请使用强制属性显式地重新安装此功能。
    给一个div添加多个背景图片
    input输入框,在手机上,软键盘会将固定定位和绝对定位的按钮顶起,解决办法
    js判断浏览器,设备类型
    js中函数function的三种定义方式,声明式定义函数、函数表达式、立即执行函数的区别
    vue项目里面,__ob__对象的理解
    浏览器渲染过程-面试
    MySQL的连接查询:left join , right join , join
    MYSQL实现连表查询
    node后台koa2项目,如何发布到服务器?入门学习
  • 原文地址:https://www.cnblogs.com/lpp-11-15/p/11263657.html
Copyright © 2011-2022 走看看