自制Jquery下拉框插件
(function ($) {
$.fn.select3 = function (option) {
$(this).each(function () {
var _this = $(this);
var isInit = _this.prev('div').hasClass('select3-parent');
if(isInit){
_this.prev('div.select3-parent ').remove();//清空之前的组件
}
var _default = {
className: 'select3-parent', //下拉框样式可自定义
width: '100px'
};
//是否是禁用状态
var isDisabled = _this[0].attributes.disabled;
if (isDisabled) {
_default.className += ' select3-disabled';
}
//默认会根据元素设置的宽度给设置宽度,这里最好设置原始下拉框的宽度
//合并自定义属性
_default = $.extend(_default, option);
var _data_val = _this.children('option:checked').attr('value'); //默认选中项的值
_data_val = (_data_val ? _data_val : '-')
var _text = _this.children('option:checked').text().trim(); //默认选中项的文本
_text = (_text ? _text : '-');
var hasBorder = _default.border == false ? 'no-border' : '';
var _tplWrap = '<div class="'+ _default.className +' '+ hasBorder+'" style="width:'+ _default.width+'">' +
'<div class="select3-topic" data-val="'+ _data_val +'"><span>'+ _text +
'</span><i class="fa fa-sort-down"></i></div><ul class="select3-ul" style="width:'+ _default.width+'">';
_this.children().each(function () {
var _this = $(this);
var _data_val = $(this).attr('value');
var _text = $(this).text().trim();
var _disabled = _this.attr('disabled');
if (_this.is('optgroup')) {
_text = _this.attr('label');
_data_val = 'group';
_tplWrap += '<li data-val="'+ _data_val +'" class="select3-group">'+ _text + '<ul>';
_this.children().each(function () {
_text = $(this).text().trim();
_data_val = $(this).attr('value');
_tplWrap += '<li data-val="'+ _data_val +'">'+ _text +'</li>';
});
_tplWrap += '</ul></li>';
}else{
if (_disabled) {
_tplWrap += '<li data-val="'+ _data_val +'" disabled="disabled">'+ _text +'</li>';
} else {
_tplWrap += '<li data-val="'+ _data_val +'">'+ _text +'</li>';
}
}
});
_tplWrap += '</ul></div>';
_this.addClass('hide');//隐藏当前控件
_this.before(_tplWrap)//显示插件化后的控件
//绑定下拉事件
$('.select3-topic').unbind().on('click', function () {
var isDisabled = $(this).parent('div').hasClass('select3-disabled');
if (isDisabled) {
return;
}
$('.open').not($(this).parent('div')).removeClass('open');
$(this).addClass('open');
$(this).children().addClass('open');
$(this).parent('div').toggleClass('open');
});
//绑定行点击事件
$('.select3-ul li[data-val!="group"]').unbind().on('click', function () {
var _parent = $(this).parents('.select3-ul');//获取父标签
var _val = $(this).attr('data-val');
var _text = $(this).text();
var _disabled = $(this).attr('disabled');
if (_parent.siblings('div').attr('data-val') == _val || _disabled) {
return;
}
_parent.siblings('div').attr('data-val', _val);
_parent.siblings('div').find('span').text(_text);
_parent.parent('div').removeClass('open');//隐藏父标签
_parent.parent('div').next('select').val(_val);//设置select值
_parent.parent('div').next('select').change();
});
});
//body click 去除下拉
$('body').unbind().click(function(e){
var pType = e.target.tagName;
var className = e.target.className;
var reg = new RegExp('open')
if (pType == 'I' || pType == 'SPAN') {
className = e.target.parentElement.className;
}
if (className == 'open-dt' || pType == 'DT' || reg.test(className)) {
return;
}
$('.open').removeClass('open');//select3第2版
});
};
})(jQuery);
CSS 代码:
/* select3 容器最外层未点开样式 */
.select3-parent{
font-family: Arial,"Microsoft YaHei";
font-size: 12px;
display: inline-block;
border-radius: 5px;
border:1px solid #dfdfdf;
height: 30px;
line-height: 30px;
cursor: pointer;
position: relative;
background-color: #ffffff;
color: #666666;
min-width: 60px;
vertical-align: top;
} .select3-disabled{
color:#999;
cursor:default;
background-color:#eee;
} .no-border{
border:none;
bottom: -5px;
} .select3-topic{
height: 30px;
line-height: 30px;
/*overflow: hidden;*/
padding-left: 10px;
padding-right: 10px;
} .select3-topic span{
height: 30px;
display: inline-block;
width: 88%;
overflow: hidden;
text-overflow:ellipsis;
} .select3-topic i{
float:right;
margin-top:5px;
} /* select3 下拉内容 */
.select3-ul{
display: none;
position: absolute;
list-style: none;
padding:0;
margin:0;
border:1px solid #dfdfdf;
border-top: none;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
margin-left:-1px;
background-color: #ffffff;
z-index: 999;
overflow: auto;
max-height: 330px;
box-shadow: 0 6px 12px rgba(0,0,0,0.2);
} /* 下拉内容样式 */ .select3-ul li{
font-size: 12px;
padding-left: 10px;
padding-right: 10px;
text-overflow:ellipsis;
} .select3-ul li[disabled]{
/*background-color: #eeeeee;*/
color: #dfdfdf;
} .select3-ul li:hover{
background-color: #111e30;
color: #ffffff;
} .select3-ul li[disabled]:hover{
background-color: #ffffff;
color:#dfdfdf;
cursor: default;
} /* 分组标题样式 select3-group */
.select3-ul li.select3-group{
padding-left: 0;
padding-right: 0;
text-indent: 10px;
color: black;
} .select3-group{
cursor: default;
font-weight: bold;
} .select3-group ul{
font-weight: normal;
color: #666666;
list-style: none;
padding:0;
margin:0;
} .select3-group li{
padding-left: 10px;
padding-right: 10px;
} li.select3-group:hover{
background-color: #ffffff;
color: black;
} .select3-group li:hover{
cursor: pointer;
} /* select3 容器最外层点开后样式 */
.select3-parent.open{
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
box-shadow: 0 6px 12px rgba(0,0,0,0.2);
border-bottom: none;
border-bottom: 1px solid #fff;
} .select3-parent.open.no-border{
border-top: 1px solid #dfdfdf;
border-left: 1px solid #dfdfdf;
border-right: 1px solid #dfdfdf;
} /* 点开后,下拉菜单内容的样式 */
.select3-parent.open .select3-ul{
display: block;
} .select3-parent.open .select3-topic{
padding:0px;
height: 29px;
margin-left: 10px;
margin-right: 10px;
border-bottom: 1px solid #dfdfdf;
}
禁用效果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAARAAAAAqCAIAAAD0/pM9AAACYElEQVR4nO3dvY6yQBiG4T3/M7CnsKKn5xDomYEhgjAalWRiNsavQFf9RN0RkJ+9r4oo5g3J8wyoCXwd68znc2NM7VvAX/ZV+yqFAWpRGMAChQEsUBjAQtPClGWplIqiKARGSEqZJMkv026MaVQYrbWUcrFY5Hm+AkaoKIo0TaWUWuvnad9sNnEcv1+YsiyrMX0fMtBUtfSXZfko7caYOI4Ph8P7hUmSJE3Tvo8UaEeapkmSPEp7lmW73e7Y5DuMlLIoir4PE2iH1loI8SjtcRx/f383KkwYhn0fI9CmMAyfpL3aoDDACYUBLFAYwAKFASwMpjCB57j+f1t1fHc2e/L2n56F7o2gML47e8E2aFOdhe4NujC+201mpjoL3eu5MIHn3C2oVbB8dzZzvKBuv2uXXV6a6ix80jDPMHeJqb/+DzznrWBNdRa6N8zC3IWo3ZV4qrPQvfEU5uc13z2nqZVVf0Kz0L1hFKb6weg+WLd5Ou1wCdZbpjoLH9F7YXy3ilTtSnzePO0UBMHqJ1jnD1qY6ix8Ts+FufzAWhss33W8wHdvr+ivV+JLul7/8TfOWRiW3s8wZ7frb/1339NffXVXLkEQrALP+d2X5RHNwsAMpjDAGFAYwAKFASxQGMAChQEsUBjAQreF4TZLmJLOb7PEjfwwJVmWKaUepb2FG/mVZSmE6PswgRZoraMo2m63j9JujJFSNirM8XjM81wIkaYpd1jGSGmtl8ullDLLsudpX6/XUsqmj7swxiil6p4jAIyAEEIp9eTccm2/3/NAJcAChQEsUBjAAoUBLFAYwMI/iPaz/g+iTJUAAAAASUVORK5CYII=" alt="" />
常态:



自制Jquery下拉框插件的更多相关文章
- jQuery下拉框插件8种效果
jQuery自定义漂亮的下拉框插件8种效果 jquery美化选择器实例有:边框.下划线. 伸缩 .滑动. 覆盖. 旋转. 弹出层选择 .环形效果. 在线预览 <body class=" ...
- 带搜索框的jQuery下拉框插件
由于下拉框的条数有几十个,于是打算找一个可以搜索查找功能的下拉框,刚开始在网上看了几个,都是有浏览器兼容性问题,后来看到这个“带搜索框的jQuery下拉框美化插件 searchable”,看演示代码简 ...
- jquery 下拉框插件,实现智能补全,模糊搜索,多选
近期已朋友问我问题,实现类似淘宝百度的下啦搜索条,看了网上好多帖子,都看起来好复杂,而且引用了好多没用的东西,而且多选选择内容多之后容易样式奔溃, 无奈之下只好自己改了, 话不多说上效果图: 模糊搜索 ...
- jQuery自定义漂亮的下拉框插件8种效果演示
原始的下拉框不好看这里推荐一个jQuery自定义漂亮的下拉框插件8种效果演示 在线预览 下载地址 实例代码 <!DOCTYPE html> <html lang="en&q ...
- Dropdown.js基于jQuery开发的轻量级下拉框插件
Dropdown.js 前言 在SPA(Single Page Application)盛行的时代,jQuery插件的轮子正在减少,由于我厂有需求而开发了这个插件.如果觉得本文对您有帮助,请给个赞,以 ...
- query多选下拉框插件 jquery-multiselect(修改)
其实网上关于该控件的使用教程已经很多了,其中 query多选下拉框插件 jquery-multiselect Jquery多选下拉列表插件jquery multiselect功能介绍及使用 这2个的介 ...
- 基于Bootstrap的下拉框插件bootstrap-select
写在前面: 在这次的项目中,没有再使用liger-ui做为前端框架了,改为了Bootstrap,这次也好接触下新的技术,在学习的过程中发现,Bootstrap的一些组件基本都是采用class的形式,就 ...
- jquery 下拉框 收藏
jquery 下拉框 Query获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code. ...
- jQuery下拉框操作系列$("option:selected",this) &&(锋利的jQuery)
jQuery下拉框操作系列$("option:selected",this) &&(锋利的jQuery) <!DOCTYPE html> <ht ...
随机推荐
- asp.net core zipkin
微服务监控zipkin+asp.net core 0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 监控目录:微服务监控zipkin.skywalking以及日志ELK监控系列 一 ...
- 【2017省中集训DAY1T1】 小X的质数
[题目链接] 点击打开链接 [算法] 如果一个数是小X喜欢的数,那么有两种可能: 1.这个数是质数 2.这个数除以它的最小质因子是一个质数 所以我们可以用线性筛+前缀和的方式预处理,询问的时候O(1) ...
- 廖雪峰ES6的箭头函数
http://www.liaoxuefeng.com/ wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014385659690576 ...
- 数据类型总结 (C++)
数据类型总结 (C++) 作用 C++ 大小 取值范围 后缀 字符 char 1 -128~127 字符(无符号) unsigned char 1 0~255 宽字符 wchar_t 2 ...
- HDU 1207 汉诺塔II (简单DP)
题意:中文题. 析:在没有第四个柱子时,把 n 个盘子搬到第 3 个柱子时,那么2 ^ n -1次,由于多了一根,不知道搬到第四个柱子多少根时是最优的, 所以 dp[i] 表示搬到第4个柱子 i 个盘 ...
- linux下sprintf_s函数的替代(转载)
转自:http://www.cnblogs.com/yeahgis/archive/2013/01/22/2872179.html windows平台下线程安全的格式化字符串函数sprint_s并非标 ...
- (水题)洛谷 - P1051 - 谁拿了最多奖学金
https://www.luogu.org/problemnew/show/P1051 这个根本就不用排序啊…… #include<bits/stdc++.h> using namespa ...
- bzoj 1478: Sgu282 Isomorphism && 1815: [Shoi2006]color 有色图【dfs+polya定理】
参考 https://wenku.baidu.com/view/fee9e9b9bceb19e8b8f6ba7a.html?from=search### 的最后一道例题 首先无向完全图是个若干点的置换 ...
- .NET Core 跨平台物联网开发:连接阿里云IOT(一)
系列教程目录 (一) 连接阿里云IOT (二) 设置委托事件 (三) 上报属性 (四) SDK文档 属性.方法.委托.类 http://pan.whuanle.cn/index.php?dir=up ...
- Gist使用经验
注:本文只是分享Gist使用经验,不讨论类似软件或服务的优劣,对于技术或软件不要有傲慢与偏见 一.Gist是什么 关于Gist的详细介绍,请阅读官方文档About gists,下面只简略介绍我所用到的 ...