Jquery封装:下拉框插件
代码如下:
;(function ($, window) {
$.fn.addSelect = function (options) {
//合并传入与默认的参数
var opts = $.extend({}, $.fn.addSelect.defaultOpts, options || {});
//实现方法
$(this).each(function () {
var _that = $(this);
// 获取下拉内容容器
var searchContentContain = _that.find(opts.searchContentContain).length > 0 ?
_that.find(opts.searchContentContain) : _that.children(":last");
searchContentContain.addClass("jsSpecialControlSlideNavigationContain");
//赋值容器
var changeValue = _that.find(opts.getValueClass);
//触发箭头
var _triggerArrow = _that.find(opts.triggerElement);
var _triggerElement = null;
// 扩展点击区域,那么触发对象就是下拉三角的父元素,否则就只有下拉三角是触发下拉元素
if (opts.extendTrigger) {
_triggerElement = _triggerArrow.parent();
// 增加className extendTriggerClass
_triggerElement.addClass("extendTriggerClass").css({
cursor : "pointer"
});
} else {
_triggerElement = _triggerArrow;
}
// 绑定下拉事件
_triggerElement.bind(opts.mouseType, function (event) {
//阻止事件冒泡
event.stopPropagation();
//阻止默认事件
event.preventDefault();
// 显示或者隐藏下拉内容狂
showOrHideSearchContentContain();
});
function showOrHideSearchContentContain() {
if (searchContentContain.is(":hidden")) {
// 其他下拉框隐藏
$(".jsSpecialControlSlideNavigationContain").hide();
// 显示当前点击的那个下拉内容容器
searchContentContain.show();
_triggerArrow.addClass("sp_mousedown_plus");
} else {
// 隐藏下拉内容容器
searchContentContain.hide();
_triggerArrow.removeClass("sp_mousedown_plus");
};
}
// 绑定文档事件
$(document).bind("click", function (event) {
// 获取当前的点击元素
var _target = $(event.target);
// 隐藏元素
searchContentContain.hide();
});
// 为内容导航容器的子元素绑定事件
searchContentContain.children().each(function () {
$(this).hover(function () {
$(this).addClass(opts.addHoverClass).siblings().removeClass(opts.addHoverClass);
}, function () {
$(this).removeClass(opts.addHoverClass);
});
$(this).click(function () {
var value = $(this).text();
changeValue.text(value);
searchContentContain.hide();
opts.callBack != null ? opts.callBack(value, $(this), changeValue) : "";
});
});
});
}
/*
* 默认参数
* triggerElement 触发事件的元素
* mouseType 触发的事件类型
* extendTrigger 是否扩展, 布尔值,默认为false,备选参数,true
* searchContentContain 下拉框容器对象 参数为id 或者class
* addHoverClass 下拉框容器鼠标滑过时添加的类名 参数为不带"." 的class
* getValueClass 获得新值得容器对象 参数为id或者class
* callBack 回调函数,会返回当前获取的值
*/
$.fn.addSelect.defaultOpts = {
triggerElement : ".sp_mousedown", // className 或者id 或者元素选择器
mouseType : "click", // 鼠标事件
extendTrigger : false, // 布尔值,默认为false,备选参数,true
searchContentContain : ".search_con_nav", // className 或者id 或者元素选择器
getValueClass : ".sp_gain_value", // 注意此参数带 "."或者"#"
addHoverClass : "dd_hover", // 注意此参数不带 "."且必须是class名 ,
callBack : null
};
})(jQuery, window);
如此使用的:
$(".fd-form-select").addSelect({
triggerElement : ".fd-form-select-mousedown", // className 或者id 或者元素选择器
mouseType:"click", // 鼠标事件
extendTrigger : true, // 布尔值,默认为false,备选参数,true
searchContentContain : ".fd-form-select-con", // className 或者id 或者元素选择器
getValueClass : ".fd-form-select-value" ,// 注意此参数带 "."或者"#"
addHoverClass : "hover" ,// 注意此参数不带 "."且必须是class名
callBack:function(value){
console.log(value);
//回调函数输出值
}
});
Jquery封装:下拉框插件的更多相关文章
- jQuery自定义漂亮的下拉框插件8种效果演示
原始的下拉框不好看这里推荐一个jQuery自定义漂亮的下拉框插件8种效果演示 在线预览 下载地址 实例代码 <!DOCTYPE html> <html lang="en&q ...
- jQuery下拉框插件8种效果
jQuery自定义漂亮的下拉框插件8种效果 jquery美化选择器实例有:边框.下划线. 伸缩 .滑动. 覆盖. 旋转. 弹出层选择 .环形效果. 在线预览 <body class=" ...
- Dropdown.js基于jQuery开发的轻量级下拉框插件
Dropdown.js 前言 在SPA(Single Page Application)盛行的时代,jQuery插件的轮子正在减少,由于我厂有需求而开发了这个插件.如果觉得本文对您有帮助,请给个赞,以 ...
- 基于jQuery select下拉框美化插件
分享一款基于jQuery select下拉框美化插件.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 源码下 ...
- 基于Bootstrap的下拉框插件bootstrap-select
写在前面: 在这次的项目中,没有再使用liger-ui做为前端框架了,改为了Bootstrap,这次也好接触下新的技术,在学习的过程中发现,Bootstrap的一些组件基本都是采用class的形式,就 ...
- query多选下拉框插件 jquery-multiselect(修改)
其实网上关于该控件的使用教程已经很多了,其中 query多选下拉框插件 jquery-multiselect Jquery多选下拉列表插件jquery multiselect功能介绍及使用 这2个的介 ...
- jquery div 下拉框焦点事件
这章与上一张<jquery input 下拉框(模拟select控件)焦点事件>类似 这章讲述div的焦点事件如何使用 div的焦点事件与input的焦点事件区别在于 需要多添加一个属性: ...
- Jquery操作下拉框(DropDownList)实现取值赋值
Jquery操作下拉框(DropDownList)想必大家都有所接触吧,下面与大家分享下对DropDownList进行取值赋值的实现代码 1. 获取选中项: 获取选中项的Value值: $('sele ...
- jquery 获取下拉框值与select text
下面先介绍了很多jquery获取select属性的方法,同时后面的实例我们讲的是jquery 获取下拉框值与select text代码. 下面先介绍了很多jquery获取select属性的方法,同时后 ...
- jQuery对下拉框Select操作总结
jQuery对下拉框Select操作总结 转自网络,留做备用 jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change( ...
随机推荐
- haproxy mycat mysql 读写分离MHA高可用
主机IP信息 hostname IP 172.16.3.140 haproxy01 172.16.3.141 haproxy02 172.16.3.142 mycat01 172.16.3.143 m ...
- centos7安装后不能连接外网
测试外网: 1,测访问外网能力:curl -l http://www.baidu.com 2,测访问外网能力:wget http://www.baidu.com 注:ping命令不一定能正确反映系统的 ...
- Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn)
Flask搭建个人博客网站(1)—项目规划--李渣渣(lizaza.cn) 发布时间:2020-05-2413次浏览 前言 现在市面上又许多比较成熟的博客平台,例如:CSDN,博客园,新浪博客等!对于 ...
- JAVA课程学习感想
JAVA课程学习感想 在学习JAVA之前,我们学习了C语言,汇编语言,数据结构等等.虽然学习了这些,但对于JAVA来说,学习起来不是那么容易,所有的计算机语言有相似的地方,但他们更有不同的地方.对我来 ...
- C#基础之构造函数(构造器)
在每个类里面默认都有一个构造方法,正式因为有了这些方法,你未赋值的变量才会有初始值,当然,我们也可以手动自己创建构造函数,可以创建多个构造函数,自己给出默认值或者!!!规定调用此类的程序对象必须要赋值 ...
- [JavaWeb基础] 014.Struts2 标签库学习
在Struts1和Struts2中都有很多很方便使用的标签库,使用它可以让我们的页面代码更加的简洁,易懂,规范.标签的形式就跟html的标签形式一样.上面的篇章中我们也讲解了自定义标签那么在如何使用标 ...
- 几种常见的app推广形式
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Centos8 删除了yum.repos.d 下面的文件
原文: https://www.cnblogs.com/junjind/p/9016107.html centos-release-8.1-1.1911.0.9.el8.x86_64 找到 https ...
- Dell KACE K1000 poc
POST /service/krashrpt.php HTTP/1.1 Host: xxx.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x ...
- 【SpringMVC】使用三层架构实现登录,注册。(上篇)
构思 界面层 1.jsp [见名知义] failed.jsp-->失败页面,登录.注册失败就跳转至失败页面 index.jsp-->默认生成的界面,没什么用 login.jsp--> ...