模拟下拉列表select

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>模拟下拉菜单</title>
    <style>
        * { margin: 0; padding: 0; }
        body { font: 14px ‘微软雅黑‘; color: #555; padding:50px; }
        ul { list-style: none; }
        p { margin-bottom: 20px; }
        .model-select-box { width: 197px; height: 27px; line-height: 27px; border: 1px solid #aaa; float: left; margin-right: 20px; text-indent: 5px; position: relative; }
        .model-select-text { height: 27px; padding-right: 27px; background: url(http://www.w3cfuns.com/forum.php?mod=attachment&aid=MTUxOTJ8YjM1MDMzOGN8MTM5NDc3OTE5M3w1NDM4NzYzfDU1OTk1NjY%3D&nothumb=yes) no-repeat right 0; 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 #aaa; }
        .model-select-option li { height: 22px; line-height: 22px; color: #555; cursor: pointer; }
        .model-select-option li.seleced { background: #06C; color: #fff; }
    </style>
</head>

<body>
<p>模拟下拉菜单</p>
<div class="model-select-box">
    <div class="model-select-text" data-value="">广州-08</div>
    <ul class="model-select-option">
        <li data-option="1">上海-01</li>
        <li data-option="2">北京-02</li>
        <li data-option="3">沈阳-03</li>
        <li data-option="4">天津-04</li>
        <li data-option="5">武汉-05</li>
        <li data-option="6">成都-06</li>
        <li data-option="7">重庆-07</li>
        <li data-option="8" class="seleced">广州-08</li>
        <li data-option="9">拉萨-09</li>
        <li data-option="10">石家庄-10</li>
        <li data-option="11">乌鲁木齐-11</li>
        <li data-option="12">济南-12</li>
        <li data-option="13">哈尔滨-13</li>
        <li data-option="14">吉林-14</li>
    </ul>
    <input type="hidden" class="selected-input" data-value="" name="cityID" value=""/>
</div>
<div class="model-select-box">
    <div class="model-select-text" data-value="">北京-02</div>
    <ul class="model-select-option">
        <li data-option="1">上海-01</li>
        <li data-option="2" class="seleced">北京-02</li>
        <li data-option="3">沈阳-03</li>
        <li data-option="4">天津-04</li>
    </ul>
    <input type="hidden" class="selected-input" data-value="" name="cityID" value=""/>
</div>
<div class="model-select-box">
    <div class="model-select-text" data-value="">武汉-05</div>
    <ul class="model-select-option">
        <li data-option="1">上海-01</li>
        <li data-option="2">北京-02</li>
        <li data-option="3">沈阳-03</li>
        <li data-option="4">天津-04</li>
        <li data-option="5" class="seleced">武汉-05</li>
    </ul>
    <input type="hidden" class="selected-input" data-value="" name="cityID" value=""/>
</div>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
    /*
     * 模拟网页中所有的下拉列表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;
        /*
         * 当机某个下拉列表时,显示当前下拉列表的下拉列表框
         * 并隐藏页面中其他下拉列表
         */
        $txt.click(function(e) {
            var  $current = $(this).siblings(‘ul.model-select-option‘);
            //隐藏其它下拉
            $option.not($current).slideUp(speed, function(){
                int($(this));
            });
            //显示当前下拉
            $current.slideToggle(speed, function(){
                int($(this));
            });
            return false;
        });
        //点击选择,关闭其他下拉
        /*
         * 为每个下拉列表框中的选项设置默认选中标识 data-selected
         * 点击下拉列表框中的选项时,将选项的 data-option 属性的属性值赋给下拉列表的 data-value 属性,并改变默认选中标识 data-selected
         * 为选项添加 mouseover 事件
         */
        $option.find(‘li‘)
                //初始化选中项 data-selected,selected-input默认值
                .each(function(index, element) {
                    if($(this).hasClass(‘seleced‘)){
                        $(this).addClass(‘data-selected‘);
                        $(this).parent().siblings($(‘input.selected-input‘)).attr(‘data-value‘,$(this).attr(‘data-option‘));
                    }
                })
                .mousedown(function(){
                    //赋值操作
                    $(this).parent().siblings(‘div.model-select-text‘).text($(this).text())
                            .attr(‘data-value‘, $(this).attr(‘data-option‘));
                    $(this).parent().siblings($(‘input.selected-input‘)).attr(‘data-value‘,$(this).attr(‘data-option‘));

                    //标识选中项
                    $(this).addClass(‘seleced data-selected‘).siblings(‘li‘).removeClass(‘seleced data-selected‘);

                    //隐藏所有下拉框
                    $option.slideUp(speed, function(){
                        //int($(this));
                    });

                    return false;
                })
                .mouseover(function(){
                    $(this).addClass(‘seleced‘).siblings(‘li‘).removeClass(‘seleced‘);
                });
        //点击文档,隐藏所有下拉
        $(document).click(function(e) {
            $option.slideUp(speed, function(){
                int($(this));
            });
        });
        //初始化默认选择
        function int(obj){
            obj.find(‘li.data-selected‘).addClass(‘seleced‘).siblings(‘li‘).removeClass(‘seleced‘);
        }
    }
    $(function(){
        selectModel();
    })
</script>
</body>
</html>
时间: 2024-10-17 14:17:39

模拟下拉列表select的相关文章

模拟下拉列表 - select

名称:laSelect 功能:模拟浏览器的原生下拉列表功能 原因:解决下拉列表在IE 7 - 下的兼容性问题,并提供更自由的外观以及功能设定. ---------------------------------------------------------------- 1. 使用方法: (1) html 结构: 创建一个包裹所有内容的盒子,必须要指定一个id,该元素由使用者自己创建: <div id='selectBox'></div> (2) 引入:laSelect.js 2

JS-005-JavaScript 操作常见 web 元素之五-常见下拉列表 Select 和 datalist

下拉列表在我们日常的网页浏览的过程中,随处可见,是 web 编程过程中大家非常熟悉的一个页面元素,随着 HTML 语言的日益强大,其在广大攻城狮的手中可谓是千变万化,有了很多不同的实现方式.本文主要以常规的 Select 下拉列表来讲述 js 对下拉列表的常规操作,其中 datalist 算是此文稍许的延伸,也可看做一种简单的下拉列表,遗憾的是 IE 9 和更早版本的 IE 浏览器 以及 Safari 不支持 datalist 标签,其主要应用于输入或搜索文字的自动完成功能等,感兴趣的亲们可以详

下拉列表Select的操作

<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>对下拉列表select的基本操作</title><script src="jquery-1.8.2.min.js"></script></head> <body><select nam

【JavaScript】下拉列表select中在value传递多个值,取出其option显示值,并应用此作为导航

对于下拉列表select,众所周知,其值就是选中的option中的value值,可是如果需要取出每一个option的显示值,那又如何做呢?虽然没什么必要取出option的显示值,但是如果有时候确实需要这个显示值,在javascript的脚本做点什么呢?另外,如果要再value处传递多个值呢?那又改如何呢? 一.取出option的显示值 你可以先传递整个select过去脚本,假设传过去的形式参数是obj,然后利用obj.options[obj.selectedIndex].innerHTML来取出

js获取下拉列表(select)选中项的值和文本

获取下拉列表选中项的值和文本(select) <html> <head> <meta charset="utf-8"/> <title>获取下拉列表选中项的值和文本(select)</title> </head> <body> <select id="myselect"> <option value="fist">1</option&

用纯css改变下拉列表select框的默认样式(转)

用纯css改变下拉列表select框的默认样式 分享到 分类 JS学习   关键字 前端   发布 kris  2015-04-01 注意 转载须保留原文链接,译文链接,作者译者等信息. 在这篇文章里,我将介绍如何不依赖JavaScript用纯css来改变下拉列表框的样式. 问题的提出 事情是这样的,您的设计师团队向您发送一个新的PSD(Photoshop文档),它是一个新的网站的最终设计. 一切看起来很好,很正常,直到你看到他/她设计的一个选择下拉框跟浏览器默认提供的样式有些不同!你说:“这没

自己动手模拟百分百&lt;select&gt;下拉列表

浏览器默认的下拉确实不好用啊,主要是样式不好修改和统一. (一)下手之前先理清一下<select>的流程: 1.结构:<select> <option value="">show</option> </select> 2.事件:点击<select>-选择<option>-显示option的innerHTML-表单value改变-onchange被触发 (二)接着写出dom结构并设计一个样式: 1.dom

移动端-模拟下拉列表

在移动端使用原生的下拉列表(select)会有自带的样式,想要做到自定义样式怎么办呢? 首先第一步会去掉默认样式:-webkit-appearance:none;这些对input下的各类型属性,如:type="date",会去掉默认样式,但是这时候对select设置的边框,宽度或者是文字居中显示等等样式都不起作用.这时候就需要模拟select框了.因为select在移动端上会用到手机默认的弹框,所以还是要用到select标签. 最终效果如图: html结构如下: 1 <div c

jquery之下拉列表select

选择下拉列表中的一项,文本框显示其值 html代码如下: <select id="ttt"> <option value="Volvo" id="op1">Volvo</option> <option value="Saab">Saab</option> <option value="Opel">Opel</option>