文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>《锋利的jQuery》要点归纳(六)插件的使用和写法

《锋利的jQuery》要点归纳(六)插件的使用和写法

时间:2010-12-08  来源:BENNY CHIA

一、插件的使用

1 表单验证插件:Validation(略)

http://plugins.jquery.com/project/validate

2 表单插件:Form——升级表单以支持ajax(略)

http://malsup.com/jquery/form/#download

3 动态绑定事件插件:livequery

http://plugins.jquery.com/project/livequery

3.1 即使元素为js动态加载到页面中,也可即时为元素绑定事件

$("a").livequery("click",function(){
//...
});

3.2 livequery插件还可以为匹配的元素触发一个回调函数,当不再匹配这个元素时,触发另一个回调函数。

$(function(){
$(
"li.canBeHover").livequery(function(){
$(this)
.hover(function(){
$(this)
.addClass("hover");
}
,function(){
$(this)
.removeClass("hover");
});
}
,function(){
$(this)
.unbind("mouseover").unbind("mouseout"); //如果移除.canBeHover则解绑mouseover和mouseout事件
});
});

3.3 live(type,fn)方法(略)

4 jQueryUI插件

http://ui.jquery.com/download

交互、微件、效果库(略)

5 Cookie插件

http://plugins.jquery.com/project/cookie

写入cookie

$.cookie("the_cookie","the_value");

读取cookie

$.cookie("the_cookie");

删除cookie

$.cookie("the_cookie",null);

其他

$.cookie("the_cookie","the_value",{
expires
: 7, //(Number/Date) 有效期,单位(天)
path: '/', //(String) cookie的路径属性
domain: 'jquery.com', //(String) cookie的域名属性
secure:true //(Boolean) 如果设置为true,此cookie的传输会要求一个安全协议,如https
});

 

二、插件的编写

1 插件的种类

a 封装对象方法的插件

b 封装全局函数的插件

c 选择器插件

 

2 插件的要点

a 推荐命名为:jquery.[插件名].js

b 所有对象方法应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上

c 在插件内部,this指向的是当前通过选择器获取的jQuery对象,而不像一般的方法那样内部的this指向的是DOM元素

d 可以通过this.each来遍历元素

e 所有的方法或函数插件以分号结尾,可以在插件头部先加上一个分号

f 插件一般应该返回一个jQuery对象,以保证插件的可链式操作。

g 避免在插件内部使用$作为jQuery对象的别名,而应使用完整的jQuery来表示以避免冲突。或者通过闭包来回避这个问题

 

3 插件中的闭包

简而言之:所有的插件代码必须放置在如下代码中

;(function($){    //开始前的分号保证更好的兼容性,此处将$作为匿名函数的形参
//...这里可以使用$作为jQuery的缩写别名

})(jQuery); //这里将jQuery作为实参传递给匿名函数

 

4 jQuery插件的机制

jQuery.fn.extend()方法,用来扩展封装对象方法的插件

jQuery.extend()方法,用来扩展封装全局函数的插件和选择器插件

 

5 编写jQuery插件

5.1 封装jQuery对象方法的插件

以编写color()插件为例,框架如下:

;(function($){
$
.fn.extend({
"color":function(value){
//插件代码
}
});
})(jQuery);

color()插件代码:

;(function($){
$
.fn.extend({
"color":function(value){
if(value==undefined){
return this.css("color");
}
else{
return this.css("color",value);
}
}
});
})(jQuery);

因css()方法内部已经有判断value是否为undefined的机制,所以可以借助css()方法的这个特性来处理,删除if()部分,简化如下:

;(function($){
$
.fn.extend({
"color":function(value){
return this.css("color",value);
}
});
})(jQuery);

 

注意:

jQuery的选择符可能会匹配1个或多个元素,所以可以在插件内部调用each()方法来遍历匹配元素。插件框架如下:

;(function($){
$
.fn.extend({
"somePlugin":function(options){
return this.each(function(){
//插件代码
});
}
});
})(jQuery);

 

5.2 封装全局函数的插件(略)

5.3 自定义选择器(略)

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载