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( ...
随机推荐
- Django之from.Form内置字段
from django import forms Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内 ...
- redis集群复制和故障转移
#### 一.集群的问题- 1.当某个主节点宕机后,对应的槽位没有节点承担,整个集群处于失败状态,不可用,怎么办- 2.如何判断某个主节点是否真正的岩机?- 3.如果从某个主节点的所有从节点中选举出一 ...
- python—day01_环境安装
搭建环境 1.win10_X64,其他Win版本也可以. 2.安装python.()3.PyCharm版本:Professional-2016.2.3. 在Windows上安装Python 首先,根据 ...
- 坑爹的cmd(整人专用)
今天我特地上网搜集了六条条最危险的cmd命令,注意! 如果你对其他人使用了这些cmd,本人概不负责. 1.蓝屏死机 @echo off del %systemdrive%\*.*/f/s/q shut ...
- F. Pathwalks动态开辟线段树
题意:n点m边,然后要求走最多的路,走路的时候经过的边权必须是严格递增. 解法1:传统的区间更新 解法2:发现区间更新只是对两个固定的点所延长形成的区间段,所以问题可以退化成单点更新单点查询. 然后动 ...
- BZOJ1022
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2701 Solved: 1721[Submit] ...
- 第4章 最基础的分类算法-k近邻算法
思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...
- Nginx 的过滤模块是干啥用的?
上一篇文章我写了 Nginx 的 11 个阶段,很多人都说太长了.这是出于文章完整性的考虑的,11 个阶段嘛,一次性说完就完事了.今天这篇文章比较短,看完没问题. 过滤模块的位置 之前我们介绍了 Ng ...
- Mysql的一次查询的过程
1.用户发起请求,这里往往时多线程并发访问 2.去数据库线程池拿数据库链接,如果没有线程池,每次访问都要和数据库建立一次连接,非常耗时,效率低下 3.数据库层面上来说,可能会有多个系统同时访问它,所以 ...
- 前端星计划笔记-day1
前端 功能,美观,安全,无障碍,性能,兼容,体验 前端编程思想 WA doctype: 文档版本 浏览器决定渲染模式 语义化: 所有的标签都有自己的含义,属性 可读性 前端规范 whatwg css显 ...