吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3371|回复: 5
收起左侧

[其他转载] 轻量级Jquery简洁精美小巧的下拉框

[复制链接]
znds 发表于 2019-6-26 09:39
本帖最后由 znds 于 2019-6-26 10:47 编辑

基于jquery-1.11.2.min.js的下拉框=========================================
效果如下
888888.png

引用了style 文件 里面 再引用 layout.css、base.css两个CSS
当然可以不这么麻烦 可以 全部写到一起去。
以下是style 文件样式定义==============================================

[CSS] 纯文本查看 复制代码
[url=home.php?mod=space&uid=697496]@charset[/url] "utf-8";
/* CSS Document */
[url=home.php?mod=space&uid=476974]@import[/url] url("layout.css");
@import url("base.css");

/*下拉菜单*/
.single-select {
    position: relative;
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
    cursor: pointer;
    *float: left;
}

    .single-select .boxwrap {
        display: inline-block;
        vertical-align: middle;
    }

    .single-select .select-tit {
        position: relative;
        display: block;
        padding: 5px 38px 5px 10px;
        min-width: 40px;
        line-height: 20px;
        height: 20px;
        border: solid 1px #eee;
        text-decoration: none;
        background: #fff;
        white-space: nowrap;
        word-break: break-all;
    }

        .single-select .select-tit span {
            display: inline-block;
            color: #333;
            font-size: 12px;
            vertical-align: middle;
        }

        .single-select .select-tit i {
            position: absolute;
            right: 0;
            top: 0;
            display: block;
            width: 28px;
            height: 100%;
            border-left: 1px solid #eee;
            background: url(skin_icons.png) 7px -189px no-repeat #fafafa;
        }

    .single-select .select-items {
        display: none;
        position: absolute;
        left: 0;
        top: 45px; /*overflow:hidden;*/
    }

        .single-select .select-items ul {
            position: relative;
            padding: 5px;
            min-width: 120px;
            max-height: 280px;
            border: 1px solid #eee;
            background: #fff;
            overflow-y: auto;
            overflow-x: hidden;
        }

            .single-select .select-items ul li {
                display: block;
                padding: 4px 10px;
                line-height: 20px;
                font-size: 12px;
                color: #666;
                white-space: nowrap;
                cursor: pointer;
            }

                .single-select .select-items ul li:hover {
                    color: #fff;
                    text-decoration: none;
                    background: #16a0d3;
                }

                .single-select .select-items ul li.selected {
                    color: #fff;
                    background: #16a0d3;
                }

    .single-select .arrow {
        display: none;
        position: absolute;
        left: 15px;
        top: 35px;
        width: 21px;
        height: 11px;
        text-indent: -9999px;
        background: url(skin_icons.png) 0 -290px no-repeat;
    }

    .single-select.up .select-items {
        top: auto;
        bottom: 45px;
    }

    .single-select.up .arrow {
        top: -13px;
        background: url(skin_icons.png) 0 -300px no-repeat;
    }

.page-footer {
    padding: 10px 0;
    height: 32px;
    font-size: 12px;
}

    .page-footer .btn-wrap {
        position: fixed;
        margin: 0;
        padding: 10px 0;
        top: auto;
        left: 15px;
        right: 15px;
        bottom: 0;
        background: #fff;
        z-index: 3;
    }

        .page-footer .btn-wrap:after {
            clear: both;
            content: ".";
            display: block;
            height: 0;
            visibility: hidden;
        }
/* ==========================下拉框样式.结束======================== */

layout.css样式定义====================================================
[CSS] 纯文本查看 复制代码
@charset "utf-8";
/* CSS Document */
/*================管理首页布局.开始===================*/
.main-top{ position:absolute; top:0; right:0; left:180px; height:42px; z-index:11; }
.main-left{ position:absolute; top:0; bottom:0; left:0; width:180px; z-index:10; }
.main-container{ position:absolute; top:43px; right:0; bottom:0; left:180px; overflow:hidden; }
        .main-container iframe{ position:absolute; top:0; right:0; bottom:0; left:0; width:100%; height:100%; }
/*================管理首页布局.结束===================*/

base.css样式定义=====================================================
[CSS] 纯文本查看 复制代码
@charset "utf-8";
/* CSS Document */
*{ padding:0; margin:0; font-family:"Microsoft YaHei";font-size:10pt; }
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
time, mark, audio, video{ margin:0; padding:0; border:0; font-size:100%; text-decoration:none; }
html { line-height:1; }
ol, ul { list-style:none; }



接下来就要绑定 下拉框 样式。
以上css引用了 图标如下:
skin_icons.png
准备工作完成后开始  js 下拉框样式的绑定事件=====================================

[JavaScript] 纯文本查看 复制代码
//单选下拉框
$.fn.ruleSingleSelect = function () {
    var singleSelect = function (parentObj) {
        parentObj.addClass("single-select"); //添加样式
        parentObj.children().hide(); //隐藏内容
        var divObj = $('<div class="boxwrap"></div>').prependTo(parentObj); //前插入一个DIV
        //创建元素
        var titObj = $('<a class="select-tit" href="javascript:;"><span></span><i></i></a>').appendTo(divObj);
        var itemObj = $('<div class="select-items"><ul></ul></div>').appendTo(divObj);
        var arrowObj = $('<i class="arrow"></i>').appendTo(divObj);
        var selectObj = parentObj.find("select").eq(0); //取得select对象
        //遍历option选项
        selectObj.find("option").each(function (i) {
            var indexNum = selectObj.find("option").index(this); //当前索引
            var liObj = $('<li>' + $(this).text() + '</li>').appendTo(itemObj.find("ul")); //创建LI
            if ($(this).prop("selected") == true) {
                liObj.addClass("selected");
                titObj.find("span").text($(this).text());
            }
            //检查控件是否启用
            if ($(this).prop("disabled") == true) {
                liObj.css("cursor", "default");
                return;
            }
            //绑定事件
            liObj.click(function () {
                $(this).siblings().removeClass("selected");
                $(this).addClass("selected"); //添加选中样式
                selectObj.find("option").prop("selected", false);
                selectObj.find("option").eq(indexNum).prop("selected", true); //赋值给对应的option
                titObj.find("span").text($(this).text()); //赋值选中值
                arrowObj.hide();
                itemObj.hide(); //隐藏下拉框
                selectObj.trigger("change"); //触发select的onchange事件
            });
        });

        //绑定控件与DIV样式联动
        $(selectObj).change(function () {
            $(this).parent().find('.selected').removeClass('selected');
            var index = $(this).prop('selectedIndex');
            $($(this).parent().find('.boxwrap .select-items ul li')[index]).addClass('selected');
            var text = $(this).find('option:selected').text();
            $(this).parent().find('.select-tit span').text(text);
        })
      
        //检查控件是否启用
        if (selectObj.prop("disabled") == true) {
            titObj.css("cursor", "default");
            return;
        }
        //绑定单击事件
        titObj.click(function (e) {
            debugger
            e.stopPropagation();
            if (itemObj.is(":hidden")) {
                //隐藏其它的下位框菜单
                $(".single-select .select-items").hide();
                $(".single-select .arrow").hide();
                //位于其它无素的上面
                arrowObj.css("z-index", "1");
                itemObj.css("z-index", "1");
                //显示下拉框
                arrowObj.show();
                itemObj.show();
            } else {
                //位于其它无素的上面
                arrowObj.css("z-index", "99");
                itemObj.css("z-index", "99");
                //隐藏下拉框
                arrowObj.hide();
                itemObj.hide();
            }
        });
    };
    return $(this).each(function () {
        singleSelect($(this));
    });
}


上面已经完成了下拉框的绑定事件接下来 就是根据 class 来初始化绑定下拉框 这样就不需要在各个引用界面 重新书写调用绑定事件了。
废话不多说 上代码 ==========================================================================
[JavaScript] 纯文本查看 复制代码
$(function(){
$('.rule-single-select').ruleSingleSelect();
})


忘记上Jquery赋值操作了 废话不多说直接补上 代码如下===================================================
[JavaScript] 纯文本查看 复制代码
$('#主键').val(值).change();//代码赋值操作

免费入口:链接:https://pan.baidu.com/s/1_rTSs3s7v11lxqULARUK6w 提取码:ez4r
复制这段内容后打开百度网盘手机App,操作更方便哦这样 一个 精美的 下拉框 就完成了 总大小148 KB jquery-1.11.2.min.js 文件占93.6KB

下拉框.rar

57.51 KB, 下载次数: 5, 下载积分: 吾爱币 -1 CB

下拉框

免费评分

参与人数 1吾爱币 +5 热心值 +1 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

内裤超人 发表于 2019-6-26 10:20
为啥我都看不起jq,还是喜欢原生js
 楼主| znds 发表于 2019-6-26 10:45
内裤超人 发表于 2019-6-26 10:20
为啥我都看不起jq,还是喜欢原生js

那你  多 分享 一点js写的 兼容性又高的 又漂亮的 比较常用的插件出来。让我等 菜鸟 涨涨见识啊?
内裤超人 发表于 2019-6-26 15:27
znds 发表于 2019-6-26 10:45
那你  多 分享 一点js写的 兼容性又高的 又漂亮的 比较常用的插件出来。让我等 菜鸟 涨涨见识啊?

没什么好分享的,就是单纯喜欢js,不喜欢jq
 楼主| znds 发表于 2019-6-26 17:33
内裤超人 发表于 2019-6-26 15:27
没什么好分享的,就是单纯喜欢js,不喜欢jq

jq 兼容性 好 。反正我觉得挺好用的。
内裤超人 发表于 2019-6-27 09:12
znds 发表于 2019-6-26 17:33
jq 兼容性 好 。反正我觉得挺好用的。

我这边公司都是用js,页面加载快
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 10:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表