代码如下:

 ;(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封装:下拉框插件的更多相关文章

  1. jQuery自定义漂亮的下拉框插件8种效果演示

    原始的下拉框不好看这里推荐一个jQuery自定义漂亮的下拉框插件8种效果演示 在线预览 下载地址 实例代码 <!DOCTYPE html> <html lang="en&q ...

  2. jQuery下拉框插件8种效果

    jQuery自定义漂亮的下拉框插件8种效果 jquery美化选择器实例有:边框.下划线. 伸缩 .滑动. 覆盖. 旋转. 弹出层选择 .环形效果. 在线预览 <body class=" ...

  3. Dropdown.js基于jQuery开发的轻量级下拉框插件

    Dropdown.js 前言 在SPA(Single Page Application)盛行的时代,jQuery插件的轮子正在减少,由于我厂有需求而开发了这个插件.如果觉得本文对您有帮助,请给个赞,以 ...

  4. 基于jQuery select下拉框美化插件

    分享一款基于jQuery select下拉框美化插件.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下 ...

  5. 基于Bootstrap的下拉框插件bootstrap-select

    写在前面: 在这次的项目中,没有再使用liger-ui做为前端框架了,改为了Bootstrap,这次也好接触下新的技术,在学习的过程中发现,Bootstrap的一些组件基本都是采用class的形式,就 ...

  6. query多选下拉框插件 jquery-multiselect(修改)

    其实网上关于该控件的使用教程已经很多了,其中 query多选下拉框插件 jquery-multiselect Jquery多选下拉列表插件jquery multiselect功能介绍及使用 这2个的介 ...

  7. jquery div 下拉框焦点事件

    这章与上一张<jquery input 下拉框(模拟select控件)焦点事件>类似 这章讲述div的焦点事件如何使用 div的焦点事件与input的焦点事件区别在于 需要多添加一个属性: ...

  8. Jquery操作下拉框(DropDownList)实现取值赋值

    Jquery操作下拉框(DropDownList)想必大家都有所接触吧,下面与大家分享下对DropDownList进行取值赋值的实现代码 1. 获取选中项: 获取选中项的Value值: $('sele ...

  9. jquery 获取下拉框值与select text

    下面先介绍了很多jquery获取select属性的方法,同时后面的实例我们讲的是jquery 获取下拉框值与select text代码. 下面先介绍了很多jquery获取select属性的方法,同时后 ...

  10. jQuery对下拉框Select操作总结

    jQuery对下拉框Select操作总结 转自网络,留做备用 jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change( ...

随机推荐

  1. P2444 [POI2000]病毒 AC自动机

    P2444 [POI2000]病毒 #include <bits/stdc++.h> using namespace std; ; struct Aho_Corasock_Automato ...

  2. nginx配置之禁止访问和404错误功能配置

    禁止访问功能配置 nginx.conf中的http{}中的server{}的location ..{}中: location / { #拒绝访问,192.168.16.0网段的同学都无法访问 /24是 ...

  3. MySQL(4)— 数据查询

    四.数据查询(DQL) 4-1.查询指定字段 select 完整 语法: select [distinct] 字段名1 [as] [别名],字段名2 [as] [别名] from 表1 [ left ...

  4. HDU3829 Cat VS Dog

    题目链接:https://vjudge.net/problem/HDU-3829 题目大意: 有\(P\)个小孩,\(N\)只猫,\(M\)只狗.每个小孩都有自己喜欢的某一只宠物和讨厌的某一只宠物(其 ...

  5. Freemarker + iTextRender 实现根据模板网页生成PDF

    #0 背景 工作需要实现导出PDF的功能,在进行简单调研后,我决定采用Freemarker + iTextRender进行实现. 基本思路如下: Freemarker实现根据动态数据渲染出需要导出的H ...

  6. python 格式化输出(% VS format)

    提到Python中的格式化输出方法,一般来说有以下两种方式: 1)% 格式说明由%和格式字符组成,如%f,%s,%d,它的作用是将数据按照指定的格式输出.格式说明是由“%”字符开始的. #1.输出字符 ...

  7. Yii2.0 URL美化功能Nginx与Apache配置文件

    NGinx: location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php$is_args$ar ...

  8. spring——bean自动装配

    注意:自动装配功能和手动装配要是同时使用,那么自动装配就不起作用. beans.xml <?xml version="1.0" encoding="UTF-8&qu ...

  9. let面试题

    两次输出结构都是2 0 1

  10. js数组取出非重复元素

    接地气,兼容性好,支持IE8) function diff(arr1,arr2){ var a = []; var b = []; for(var i=0;i<arr2.length;i++){ ...