jQuery 插件简单模板
/*!
* Copyright yunos.com All rights reserved.
* jquery.scrollspy.js
* @author v10258@qq.com
* @version 0-0-1
*/
(function ($) { // contructor function
var ScrollSpy = function (element, options) {
this.element = $(element);
this.options = $.extend({}, ScrollSpy.defaults, options || {});
this.anchorArr = $(element).find('a');
this.init();
}; // default config
ScrollSpy.defaults = {
scrollEle: $(window)
}; // prototype
ScrollSpy.prototype = {
constractor: ScrollSpy,
init: function () {
var self = this,
element = this.element,
scrollEle = this.options.scrollEle,
anchorData,
scrollTop; scrollEle.on('scroll', function () {
// The realization of the bad dynamic acquisition
anchorData = self.getAnchorData();
scrollTop = $(this).scrollTop();
for (var i = 0, len = anchorData.length; i < len; i++) {
if (anchorData[i].min <= scrollTop && scrollTop < anchorData[i].max) {
$(anchorData[i].author).parent().addClass('current').siblings().removeClass('current');
break;
}
}
});
},
getAnchorData: function () {
var anchorArr = this.anchorArr,
active,
activeDom,
anchorTargetArr = []; anchorArr.each(function (i, n) {
active = $($(this).attr('href'));
activeDom = active[0];
anchorTargetArr.push({
ele: activeDom,
author: this,
min: active.offset().top,
max: active.offset().top + active.height()
});
});
return anchorTargetArr;
},
distroy: function(){
this.element.removeData('scrollspy');
this.options.scrollEle.off('scroll');
}
}; // bridging
$.fn.scrollspy = function (option) {
return this.each(function () {
var $this = $(this),
data = $this.data('scrollspy'),
options = typeof option == 'object' && option; if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)));
if (typeof option == 'string') data[option]();
});
};
})(jQuery);
个人感觉,写插件,插件的具体结构,能用原生结构,还是用原生结构的好,最后桥接在jquery上.
如果像下面这样,看起来是不是有点 蛋疼呢。
(function ($) {
$.love.defaults = {
// ......
};
$.love = function (element, o) {
this.element = element;
this.options = $.extend({}, $.love.defaults, o);
// ......
}; var $love = $.love;
$love.fn = $love.prototype = {
verson: '0.0.1'
// ......
};
$love.fn.extend = $love.extend = $.extend; $love.fn.extend({
metod: function () { }
// ......
}); $.fn.ilove = function (o) {
// ......
};
})(jQuery);
jQuery 插件简单模板的更多相关文章
- jquery 插件封装模板
//插件编写模板 ;(function ($) { $.fn.plugIn = function ( opt ) { var def = { //这里填写自定义的参数例如: event : 'clic ...
- jquery插件简单的声明方法
(function($){ // 声明插件内容 $.fn.pluginName = function(options){ // 默认插件配置 var ...
- table切换jquery插件 jQuery插件写法模板 流程
通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 通过$.extend()来扩展jQuery $. ...
- python 全栈开发,Day58(bootstrap组件,bootstrap JavaScript 插件,后台模板,图表插件,jQuery插件库,Animate.css,swiper,运行vue项目)
一.bootstrap组件 无数可复用的组件,包括字体图标.下拉菜单.导航.警告框.弹出框等更多功能. 组件和插件的区别? 插件:一个功能,比如js文件 组件:html css js 组件包含插件 面 ...
- jquery 插件和后台模板搜集
弹框 alert confirmhttp://www.jq22.com/jquery-info2607 jQuery表格排序筛选插件http://www.jq22.com/jquery-info880 ...
- 一个简单的消息提示jquery插件
最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...
- 推荐两款简单好用的图片放大jquery插件
一.zoomfiy.js 推荐可以从这里下载 使用说明: 使用该jquery 插件引入该插件的js:zoomfiy.js 或 min引入该插件的css:zoomfiy.css 或 min前后顺序都可j ...
- jquery 提示简单效果插件 cluetip
介绍一个不错的jquery插件-cluetip 我们在做web项目的时候,经常会使用到提示效果.html自带的提示效果是label标签的title,但是这个效果过于简单和难看,并且不方便调整样式. 今 ...
- 编写一个简单的Jquery插件
1.实现内容 定义一个简单的jquery插件,alert传递进来的参数 2.插件js文件(jquery.showplugin.js) (function ($) { //定义插件中的方法 var me ...
随机推荐
- Happy Programming Contest(ZOJ3703)(01背包+路径储存)
Happy Programming Contest ZOJ3703 老实说:题目意思没看懂...(希望路过的大神指点) 最后那个the total penalty time是什么意思啊!!! 还是学 ...
- 打造自己的视频会议系统 GGMeeting(附送源码)
自从在博客园发布广域网即时通信系统GG(QQ高仿版)以来,结识了很多做IM的朋友,然后我和我的伙伴们也接到了很多与IM相关的项目.相比在发布GG之前难以接到项目的状况相比,现在简直太幸福了,虽然做项目 ...
- PSP
PSP2.1 Time(%) Planning 10 l Estimate 10 Development 90 l Analysis 10 l Design Spec 5 l Design Revie ...
- sublime 2/3 for mac link to command
Sublime command for mac : execute those command: subl 2: sudo ln -s /Applications/Sublime\ Text\ 2.a ...
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ...
- 如何基于纯GDI实现alpha通道的矢量和文字绘制
今天有人在QQ群里问GDI能不能支持带alpha通道的线条绘制? 大家的答案当然是否定的,很多人推荐用GDI+. 一个基本的图形引擎要包括几个方面的支持:位图绘制,文字绘制,矢量绘制(如矩形,线条). ...
- [ZigBee] 2、 ZigBee开发环境搭建
本节介绍ZigBee基本开发环境搭建,附件中有本节介绍的软件下载地址~ 链接:http://pan.baidu.com/s/1bLdqxg 1.IAR Embedded Workbench 的安装 S ...
- Java基础类型总结
最近一直在总结反思自己, 趁着现在请假在学校上课的空余时间,从基础开始重新温故学习下Java,充实下自己. 一.数据类型 从下图中,我们可以很清晰的看出Java中的类型,其中红色方框中的是Java的4 ...
- Azure China (10) 使用Azure China SAS Token
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 注意:本文介绍的是Azure China Storage Priva ...
- XCode v8.11 重量级分表分库(无视海量数据)
XCode天生就有分表分库功能,设计于2005年!历时9年,这是分表分库功能第一次针对性正式更新. 在XCode里面,分表分库非常简单,在操作数据(查询/更新)前修改Meta.ConnName/Met ...