锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]

1.表单验证插件Validation

 

2.表单插件Form

 

3.动态事件绑定插件livequery

可以为后来的元素绑定事件

 

类似于jQuery中的live()方法

 

 

4.jQuery UI

 

5.jQuery Cookie

 

6.遮罩层插件:thickbox

 

7.编写jQuery插件

<1>编写插件的目的:给已经有的一些列方法或函数做一个封装,一遍在其他地方使用,方便后期维护和提高开发效率。

 

<2>三种类型的插件

a:封装对象方法的插件  jQuery.fn.extend()

b:封装全局函数的插件  jQuery.extend()

c:选择器插件  jQuery.extend()

 

<3>插件内部的this指向的是jQuery对象,而不是DOM对象。

 

8.对于

jQuery 插件-(初体验一)

jquery.fn.extend与jquery.extend--(初体验二)

$.extend({},defaults, options) --(初体验三)

的补充。

 

<1>插件的基本要点

 

<2>jQuery.extend()方法处理可以用于扩展jQuery对象之外,还有一个强大的功能,就是用于扩展已有的Object对象。

例如:

var settings={va: false, li: 5, name:"foo"};
var options={va: true, name:"bar"};
var newSet=jQuery.extend(settings,options);

 

结果:

newSet={va: true, li: 5, name:"bar"};

 

所以:jQuery.extend()方法经常被用于设置插件方法的一系列默认参数。

例子:

function foo(options){
    options=jQuery.extend({
        name:"bar",
        length:5,
        dataType:"xml"
    },options);
}

 

<2>封装方法的插件使用

例子:写color插件。

1.js文件命名:jQuery.color.js

 

2.格式

;(function($){

})(jQuery);

 

3.由于是封装方法的插件使用:jQuery.fn.extend()

;(function($){
    $.fn.extend({
        "color":function(value){

        }
    })
})(jQuery);

 

4.this的可链式调用性

;(function($){
    $.fn.extend({
        "color":function(value){
              return this.css("color",value);    //为了可链式调用,返回this
        }
    })
})(jQuery);

 

5.两个功能:设置与获取color

;(function($){
    $.fn.extend({
        "color":function(value){
            if(value==undefined){
              return this.css("color");    //为了可链式调用,返回this
            )else{
                return this.css("color",value);
            }
        }
    })
})(jQuery);

 

6.插件提升

a:由于css方法本身具有返回第一个匹配元素的功能,所以不需要使用eq()来获取第一个元素

b:由于css方法内部已经有判断value是否为undefined的机制,所以可以省略if

最终:

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

 

7.实际使用:

<script>

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

//应用
$(function(){
    alert($("div").color());    //获取第一个color
     $("div").color("red");    //设置所有的div的color为red
})

</script>

 

8.插件扩展:如果要定义一组插件可以这么写

;(function($){
    $.fn.extend({
        "color":function(value){

        },
       “border”:function(value){

        },
        ...
    })
})(jQuery);

 

9.注意:jQuery选择符可能会匹配多个元素,可以在插件内部调用each()方法来遍历匹配元素。

如:

;(function($){
    $.fn.extend({
        "color":function(value){
                return this.each(function(){

            })
        }
    })
})(jQuery);

 

<3>封装全局函数的插件使用

例子:去除左侧和右侧的空格

;(function($){
    $.extend({
        ltrim:function(text){
                return (text || "").replace(/^\s+/g,"");
        },

        rtrim:function(text){
                return (text || "").replace(/^\s+$/g,"");
        }

    })
})(jQuery);

//调用
$("div").val(
    jQuery.ltrim("      text        ")
)
 

 

<4>选择器插件

$("div:gt(1)")

 

jQuery中的源码是

gt:function(a,i,m){

    return i>m[3]-0;

}

有三个参数:a,i,m

转载:http://www.cnblogs.com/zqzjs/p/4943617.html

时间: 2024-09-22 15:38:52

锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]的相关文章

基于jquery编写分页插件_jquery

扩展JQuery很容易,作为一个练习,编写一个简单的分页插件,代码量不大,直接看代码好了: $.fn.mypagination = function(totalProperty,opts){ opts = $.extend({ perPage:10, callback:function(){ } },opts||{}); return this.each(function(){ function numPages(){ return Math.ceil(totalProperty/opts.pe

锋利的jQuery--jQuery事件,动画(读书笔记二)

1.注意$(document).ready()方法和window.onload方法之间的细微区别 $(document).ready()在DOM树构建完成就会执行,而window.onload是在DOM树构建完成后且相关的文件下载完毕后才会执行. 例如:一个图库页面,且给页面上图片绑定了事件 $(document).ready()就会在图库页面的DOM结构完成就会执行,但这时候页面上面图片还没下载完毕,给图片绑定的事件也就不能起作用.这时候如果要获取图片的宽高就会失败.   为了解决这个问题:可

More Effective C++ 读书笔记五——异常

条款12:了解"抛出一个exception"与"传递一个参数"或"调用一个虚函数"之间的差异 第一,exception object总是会被复制,如果以by value方式捕捉,它们甚至被复制两次.至于传递给函数参数的对象不一定得复制.第二,"被抛出成为exceptions"的对象,其被允许的类型转换动作,比"被传递到函数去"的对象少.第三,catch子句以其"出现于源代码的顺序"被编译

《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石

        马云说过"一个好的东西往往是是说不清楚的",姑且不论这句话的对与错.但我真的很佩服<淘宝技术这十年>这本书的作者子柳,能够通过淘宝的一些故事,按照时间顺序和IT发展的各种技术描述清楚,而且过程中读起来非常有意思.         该读书笔记中参杂了很多原文的知识,因为我实在无法割舍,都挺有意思的:同时记录一些有用的知识,通过这本书能介绍些学过的知识或面试中可能出现的题目及作者所思,文章还是非常有趣的,希望对大家有所帮助! 一. Java时代 脱胎换骨    

插件编写---jquery源码品读之入口extend(1)

//整个extend函数代表着如何寻找过来的参数(可以是任何对象[数组也是对象]),返回需要的对象.在javascirpt中extend理论之一是合并或复制对象.那么如何<pre name="code" class="javascript">复制<span style="font-family: Arial, Helvetica, sans-serif;">呢?基本的理论在我的http://blog.csdn.net/lu

基于编写jQuery的无缝滚动插件_jquery

首先来看下html骨架,如下: <div class="box"> <ul> <li>111</li> <li>222</li> <li>333</li> </ul> </div> 结构简单明了,没什么说的. 讲下实现原理: div box是最外层盒子,给它指定的宽高,记得给box添加一个 overflow:hidden (超出的内容隐藏)样式,因为滚动肯定是会超出b

10款jQuery文本高亮插件

[编者按]本文作者为 Julian Motz,主要介绍十款 jQuery 文本高亮插件的现状.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 很多应用或网站都为用户提供搜索关键词的方法.为了加快这一过程,提供良好的用户体验,帮助用户准确地查找到他们搜索的内容,你可以在页面中动态高亮这些搜索关键字. 这里有10款jQuery文本高亮插件,可以实现这一功能. 1. mark.js 这是用于搜索术语或自定义正则表达式的关键字高亮插件,使用ES6语言编写,基于几十个跨浏览器的单元测试,以及代码

《jQuery与JavaScript入门经典》——1.2 为编写jQuery和JavaScript做准备

1.2 为编写jQuery和JavaScript做准备 简要地介绍动态Web编程后,该切入正题,为编写jQuery和JavaScript准备好开发环境了. 编写jQuery和JavaScript项目时,开发环境至关重要.开发环境应具有如下特点. 易于使用的IDE:IDE提供了文本编辑器,让您能够以最简单的方式修改代码.请选择您用起来很顺手且支持HTML.CSS.JavaScript和jQuery的IDE. 用于开发的Web服务器:绝不要直接在用于生产的Web服务器上进行开发(虽然大多数人都会偶尔

JQuery闭包,插件的写法

jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法.下面就两种函数的开发做详细的说明. 1.类级别的插件开发 类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法.典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中.关于类级别的插件开发可以采用如下几种