- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《jQuery插件编写学习实例——无限滚动
最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简单学习了下jQuery的插件编写,然后分享出来。
?
先说下基础知识,基本上分为两种,一种是对象级别的插件,另一种是全局级别的插件。对象级别的插件就像是实例方法,它是属于实例对象的,而全局级别的相当于静态方法,是属于类的,调用起来自然也就不一样,对于全局级别的插件我们自然是使用jQuery来调用,比如$.NPScrollLoad(),对象级别的插件自然是应用与jQuery对象上了,比如:$(selector).NPScrollLoad(...)。这个不难理解吧。
对于$.NPScrollLoad()这种形式,我们要对jQuery进行扩展,怎么扩展呢,很简单,就像给对象赋值一样
方法1:
方法2:
这就是在博客园,发布博客界面测试的,F12打开开发者工具,切换到Console,先输入运行$,确认页面引入了jQuery,然后扩展jQuery,一种方法是直接给属性名赋值$.youname = function(){...}, 另一种方法是使用$.extend({yourname:function(){...}}),使用哪种看个人喜好。
?
对于$(selector).NPScrollLoad()这种方式,扩展就不是jQuery本身了,而是jQuery.fn:
方法1:
方法2:
和全局级别的插件方法区别就是扩展的时$.fn而不是$。
?
因为各式各样的插件很多,属性重名的概率很高,为了避免这样那样的问题,我们使用闭包来写插件,从而使插件的变量和function和其他的不互相影响,这个我尽量简化:
1 ;(function($) {
2 // jQuery扩展
3 $.youname = function([args]) {
4 // TODO
5 };
6 // 或者
7 $.extend({
8 youname : function() {
9 // TODO
10 }
11 });
12
13 // jQuery对象扩展
14 $.fn.youname = function([args]) {
15 // TODO
16 };
17 // 或者
18 $.fn.extend({
19 youname : function() {
20 // TODO
21 }
22 });
23 }) (jQuery);
?为什么要这样写?看下面的例子你就明白了:
这个其实就相当于我们直接执行一个匿名函数,并且传递给他一个参数,比如上面的例子就是,我们定义了一个匿名函数用来alert传进去的参数,然后我们给它传递hello!,它就会马上执行,把插件的相关方法写到这里面并且引入这个js文件的话也就会在第一时间把我们的插件扩展到jQuery上,从而可以直接使用,并且可以保护我们的代码不受外面代码影响,也不会污染其他的代码。为了防止以后压缩代码的时候出错,所以最好在前后都加上一个分号;。
?
为了让我们的插件足够通用,我们需要把一些配置留给用户自己定义,通用的做法是使用一个对象来承载所有的设置项,并给他们默认值。
1 var defaults = {
2 msg1: hello1,
3 msg2: hello2
4 }
然后我们给我们的插件函数加上参数:
1 ;(function($) {
2 var defaults = {
3 msg1: hello1,
4 msg2: hello2
5 };
6
7 $.NPScrollLoad = function(options) {
8 var opts = $.extend(defaults, options);
9 alert(opts.msg1 + opts.msg2);
10 };
11
12 }) (jQuery);
?
然后就可以调用了
$.NPScrollLoad({msg1 : 你好});
$.NPScrollLoad({msg1 : 你好, msg2 : 呵呵});
$.NPScrollLoad({msg2 : });
$.NPScrollLoad();
没有赋值的属性会使用defaults里面定义的默认值,赋值的属性则会覆盖defaults中相应的属性。
?
下面是我写
文档评论(0)