代码如下:

 ;(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. MySQL(9)— 规范数据库设计

    九.规范数据库设计 9-1.为什么要设计? 当数据库比较复杂时,我们就需要设计了! 糟糕的数据库设计: 数据冗余,浪费大量存储空间 使用物理外键,大量的增删改操作麻烦,异常 查询效率低下 良好的数据库 ...

  2. CF948B Primal Sport

    题目链接:http://codeforces.com/contest/948/problem/B 知识点: 素数 解题思路: \(f(x)\) 表示 \(x\) 的最大素因子.不难想到:\(X_1 \ ...

  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理

    上一篇文章(https://www.cnblogs.com/meowv/p/12956696.html)成功使用了Redis缓存数据,大大提高博客的响应性能. 接下来,将完成一个任务调度中心,关于定时 ...

  4. Kubernetes基本概念与架构

    Kubernetes,面向云原生应用的新“云平台” Kubernetes:以google Brog为原型 Kubernetes的成长历程: l  2014年,Kubernetes正式由google开源 ...

  5. [PHP学习教程 - 网络]002.$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]介绍($_SERVER URL Infomation)

    引言:在使用原生PHP的时候,对于URL路径的切割,如:域名,查询参数等等的提取,通常绝大多数兄弟会忽略$_SERVER中定义的内置常量的关系,这里为大家讲解一下. 常用的URL请求路径$_SERVE ...

  6. [安卓基础] 005.创建一个简单的UI

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. 50个SQL语句(MySQL版) 问题九

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  8. (String),toString(),String.valueOf()

    String.valueOf("")的源码:(推荐这种写法) 注意:obj问null时,返回值是字符串"null" toString("") ...

  9. java继承会犯的小错误

    注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 public class Father { private void print() { S ...

  10. Java实现 LeetCode 812 最大三角形面积 (暴力)

    812. 最大三角形面积 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0] ...