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( ...
随机推荐
- PAT-1132 Cut Integer (整数分割)
Cutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long int ...
- ShoneSharp语言(S#)软件更新13.7版
ShoneSharp语言(S#)编辑解析运行器 软件更新13.7版 作者:Shone 近期在写博客过程中对S#进行增强,把语法规则更新到2.0版,并同步更新软件到ShoneSharp.13.7.exe ...
- Java连接MySql报错—— com.mysql.cj.exceptions.InvalidConnectionAttributeException
详细报错 java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents mor ...
- EL表达式用法---查询博客
jsp脚本:<%=request.getAttribute(name)%>EL表达式替代上面的脚本:${requestScope.name} 使用EL最主要的作用是获得四大域中的数据,格式 ...
- Verilog代码和FPGA硬件的映射关系(三)
组合逻辑和FPGA之间的映射关系我们知道了,那时序逻辑和FPGA之间又是一种怎样的映射关系呢?我们就以前面寄存器章节的例子来向大家说明,也一同把当时为什么用异步复位更节约资源的原因告诉大家.我们先来看 ...
- 一文读懂JAVA多线程
背景渊源 摩尔定律 提到多线程好多书上都会提到摩尔定律,它是由英特尔创始人之一Gordon Moore提出来的.其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍 ...
- eatwhatApp开发实战(一)
开发背景: 当你想用抛硬币来决定事情的时候,那么硬币抛起的瞬间,你就有答案了.一样的,吃啥?eatwhat点开,按钮一点,你就可以知道你中午要吃啥. 话不多说,项目开发走起 ADT点开,New==&g ...
- 【转】shell的反引号、单引号、双引号的作用
Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...
- 【转】DataFrame合并
参考:python 把几个DataFrame合并成一个DataFrame——merge,append,join,conca 横向合并(扩展列):merge,类似SQL的join,内连接,外连接等. 纵 ...
- 服务器开发 Ubuntu
一.Ubuntu安装: 为什么用Ubuntu,作为服务器初学者开发,如果真的要买苹果系统电脑性价比不高,所以在window系统中安装Linux虚拟机是不二之选.为什么用Ubuntu不多说了,开始安装吧 ...