博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我最喜欢的jQuery插件模板
阅读量:6366 次
发布时间:2019-06-23

本文共 1428 字,大约阅读时间需要 4 分钟。

  我使用jQuery已经有相当长的时间了,并且我会常常为它写一些插件(plugin)。我尝试过用不同的方式去写,现在这个模板是我最喜欢的:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
;(
function
($) {
  
// multiple plugins can go here
  
(
function
(pluginName) {
    
var
defaults = {
      
color:
'black'
,
      
testFor:
function
(div) {
        
return
true
;
      
}
    
};
    
$.fn[pluginName] =
function
(options) {
      
options = $.extend(
true
, {}, defaults, options);
             
      
return
this
.each(
function
() {
        
var
elem =
this
,
          
$elem = $(elem);
 
        
// heres the guts of the plugin
          
if
(options.testFor(elem)) {
            
$elem.css({
              
borderWidth: 1,
              
borderStyle:
'solid'
,
              
borderColor: options.color
            
});
          
}
      
});
    
};
    
$.fn[pluginName].defaults = defaults; 
  
})(
'borderize'
);
})(jQuery);
 
//下面是用法
$(
'div'
).borderize();
$(
'div'
).borderize({color:
'red'
});

  以下是我喜欢这种模板的原因

  1. 你仍然可以访问里面的默认选项,即便它被重写了(简单地通过父属性的访问)

  2. 通过修改pluginName即可更改插件的名字。(这种方式对代码压缩也非常有利)

  第#1点非常强大,比如说我们希望复写这个方法,但是仍然希望保留原来的方法,我们可以看下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(
'.borderize'
).borderize({
    
testFor:
function
(elem) {
        
var
$elem = $(elem);
        
if
(elem.is(
'.inactive'
)) {
            
return
false
;
        
}
else
{
            
// calling "parent" function
            
return
$.fn.borderize.defaults.testFor.apply(
this
, arguments);
        
}
    
}
});
We can even
do
this
with
regular properties like
this
 
var
someVarThatMayBeSet =
false
;
/* code ... */
 
$(
'.borderize'
).borderize({
    
color: someVarThatMayBeSet ?
'red'
: $.fn.borderize.defaults.color
});

  你有更好的模板吗?欢迎回复。

  原文 

转载地址:http://lkrma.baihongyu.com/

你可能感兴趣的文章
[置顶] How to dump redo log entry?
查看>>
Nutch1.7学习笔记:基本环境搭建及使用
查看>>
kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件
查看>>
用Chart控件绘制动态图表
查看>>
数字信号处理之低通滤波器设计
查看>>
Learning Cocos2d-x for WP8(3)——文字篇
查看>>
转 AngularJS 2.0将面向移动应用并放弃旧浏览器
查看>>
Leetcode: Swap Nodes in Pairs
查看>>
学习《Hardware-Efficient Bilateral Filtering for Stereo Matching》一文笔记。
查看>>
webservice2
查看>>
求最大公约数和小于n的所有质数
查看>>
Length of Last Word
查看>>
NFS(Network File System)服务配置和使用
查看>>
开源的PaaS方案:在OpenStack上部署CloudFoundry (五)常见问题
查看>>
java 字符串格式化
查看>>
支付宝申请到编码流程
查看>>
ZOJ 3872--解题报告
查看>>
为什么整个互联网行业都缺前端工程师?
查看>>
《GK101任意波发生器》升级固件发布(版本:1.0.2build851)
查看>>
Centos6.4下安装protobuf及简单使用
查看>>