`
乱蓬头199303
  • 浏览: 80495 次
文章分类
社区版块
存档分类
最新评论

举例说明jquery插件的编写方法

阅读更多
摘要: jquery插件开发分为类级别开发和对象级别开发

jquery插件开发分为类级别开发和对象级别开发

类级别($.extend)
jQuery.extend(object)类级别就是用来在jQuery类/命名空间上增加新函数,可以理解为拓展jquery类,最明显的例子是$.ajax(...),ajax方法都是用jQuery.ajax()这样调用的,有点像 “类名.方法名” 静态方法的调用方式。开发扩展其方法时使用$.extend方法,即jQuery.extend(object);

jQuery.extend() 方法有一个重载
下面我们也来写个jQuery.extend(object)的例子:

jQuery.extend({
    "minValue": function (a, b) {
        return a < b ? a : b;
    },
    "maxValue": function (a, b) {
        return a > b ? a : b;
    }
});
调用:

var i = 100; j = 101;
var min_v = $.minValue(i, j); // min_v 等于 100
var max_v = $.maxValue(i, j); // max_v 等于 101
重载版本:jQuery.extend([deep], target, object1, [objectN])

用一个或多个其他对象来扩展一个对象,返回被扩展的对象

如果不指定target,则给jQuery命名空间本身进行扩展。这有助于插件作者为jQuery增加新方法

如果第一个参数设置为true,则jQuery返回一个深层次的副本,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构

未定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制

参数:

deep: 可选。如果设为true,则递归合并。

target: 待修改对象。

object1: 待合并到第一个对象的对象。

objectN: 可选。待合并到第一个对象的对象

示例1:

//合并 settings 和 options,修改并返回 settings。
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
//结果:
settings == { validate: true, limit: 5, name: "bar" }
示例2:

//合并 defaults 和 options, 不修改 defaults。
var empty = {};
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = jQuery.extend(empty, defaults, options);
//结果:
settings == { validate: true, limit: 5, name: "bar" }
empty == { validate: true, limit: 5, name: "bar" }
这个重载的方法,我们一般用来在编写插件时用自定义插件参数去覆盖插件的默认参数

对象级别
对象级别则可以理解为基于对象的拓展,如$("#table").changeColor(...); 这里这个changeColor呢,就是基于对象的拓展了。
开发扩展其方法时使用$.fn.extend方法,即jQuery.fn.extend(object);


## 首先准备好一个架子

;(function($){})(jQuery);

这个架子是你编写插件代码要写入的空间,下面简单解释一下这个架子

1.自执行的匿名函数:是指形如这样的函数:

(function {// code})();

在jQuery环境下封装自己的插件,首先为避免与其他库的冲突,需要在插件的后面传一个jQuery参数进去,对应的函数里面的参数写入$

2 为避免出现问题,需在插件的前后加入分号(分号的增加并不会影响程序的运行)

3.为什么```(function{// code})();```可以被执行, 而```function{// code}();```却会报错?

首先, 要清楚两者的区别:``` (function {// code})```是表达式, ```function {// code}```是函数声明.   

其次, js"预编译"的特点: js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.   

当js执行到```function(){//code}();```时, 由于```function() {//code}```在"预编译"阶段已经被解释过, js会跳过```function(){//code}```, 试图去执行```();```, 故会报错;

当js执行到```(function {// code})();```时, 由于```(function{// code})```是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到```();```时, 便会被执行.

另外, 函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以用void操作符,~操作符,!操作符……
例如:

//bootstrap 框架中的插件写法:
!function($){
  //do something;
}(jQuery);

(function($){
  //do something;
})(jQuery);
是一回事

匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),并且还可以构建命名空间,以减少全局变量的使用

例如:

var a=1;
(function(){
var a=100;
})();
alert(a); //弹出 1


## 再上一个架子

;(function($){
$.fn.tab = function(options){
var defaults = {
//各种参数,各种属性
}
var options = $.extend(defaults,options);
this.each(function(){ //没有必要再作 $(this) ,因为"this"已经是 jQuery 对象了.$(this) 与 $($('.tab')) 是相同的
//各种功能
});
return this; //直接写成return this.each()这里可以省略
http://click.aliyun.com/m/23412/
分享到:
评论

相关推荐

    jquery插件编写指南

    为了实现方法之间的连缀,插件方法需要返回一个 jQuery 实例对象。 #### 七、为插件方法定义默认值 - **实现**:利用 `jQuery.extend` 方法定义默认值。 - **示例**: ```javascript (function($) { $.fn....

    jQuery插件编写步骤详解

    jQuery插件编写是jQuery框架中一个重要的组成部分,它允许开发者扩展jQuery的核心功能,创建自定义的、可复用的组件。jQuery插件的编写通常遵循一套标准的步骤,这些步骤包括: 1. **封装匿名函数**: jQuery插件...

    jquery插件库(jquery.treeview插件库)

    jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery.treeview插件库)jquery插件库(jquery....

    jquery插件库大全(200个).zip

    jquery插件库大全(200个): jqueryQQ表情插件 jquery下拉菜单导航 jquery下拉菜单栏 jquery仿Windows系统选中图标效果 jquery仿京东商品详情页图片放大效果 jquery仿百度新闻焦点轮播 jquery分离布局模版 jquery...

    jQuery插件开发学习

    3. **扩展jQuery对象**:使用`$.fn.extend`方法将插件函数添加到jQuery原型链上,这样我们就可以像使用jQuery内置方法一样调用自定义插件。 4. **设置默认选项**:定义一个对象来存储插件的默认配置,这样用户可以...

    如何编写jquery插件

    此类插件可以发挥出jQuery选择器的强大优势,有相当一部分的jQuery的方法,都是在jQuery脚本库内部通过这种形式“插”在内核上的,例如:parent()方法、appendTo()方法等。这些方法在现在来看都是jQuery本身自带的...

    orgchart.js 组织架构图之JQuery插件

    组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件组织架构图之JQuery插件...

    jQuery插件,jQuery插件

    jQuery插件的使用通常非常简单,只需要在HTML文档中引入jQuery库和插件脚本,然后在需要的地方调用相应的插件方法。例如,如果有一个名为`slider`的插件,可以这样使用: ```html &lt;script src="jquery.js"&gt; ...

    jquery插件.rar

    为了实现这一点,插件函数应该始终返回`this`,以便用户可以继续执行其他jQuery方法: ```javascript $.fn.myPlugin = function(options) { // ... return this; // 保持链式调用 }; ``` 五、插件实例化与数据...

    Jquery快速学(五,常用的插件应用与编写)

    《jQuery快速学(五,常用的插件应用与编写)》是一个深入浅出的教程,旨在帮助初学者和有一定基础的开发者更好地理解和应用jQuery插件。本教程覆盖了多个关键知识点,包括但不限于jQuery插件的基本原理、插件的编写...

    sublime2 jquery插件

    在Sublime Text 2中安装jQuery插件,可以极大地提升前端开发者的工作效率,使得jQuery代码的编写更加得心应手。 jQuery是一种强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务,极大地...

    eclipse上支持jquery插件

    描述中的“使eclipse能够提供jquery提示,更快编写jquery代码”,进一步强调了这个插件的主要目标:提升开发效率。通过提供jQuery API的自动完成和上下文敏感的帮助,开发者可以快速地查找和使用jQuery方法,减少...

    jquery插件库-jquery仿京东商品详情页图片放大效果.zip

    在网页设计领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了JavaScript代码的编写,使得动态交互和动画效果的实现变得更加容易。"jquery插件库-jquery仿京东商品详情页图片放大效果.zip"这个压缩包文件...

    JQuery插件的写法 最常用的jquery插件开发方式(教程合集).zip

    JQuery插件的写法 最常用的jquery插件开发方式(教程合集) jquery插件的例子 jQuery插件开发教程_看这一本就行了 JQuery插件写法 jq插件最常用的写法

    jquery插件开发文档

    在编写jQuery插件时,首先要了解其基本结构。开发者通常往`jquery.fn`对象中添加一个特定的函数对象,从而创建一个新的插件。例如,创建一个名为`myPlugin`的插件,可以这样定义: ```javascript jQuery.fn....

    jquery插件

    总之,jQuery插件极大地丰富了jQuery的功能,使得开发者能够快速构建功能齐全、用户体验良好的Web应用,而无需从零开始编写大量代码。通过选择合适的插件,可以节省开发时间,提高工作效率,并确保项目具备高质量和...

    JQuery插件开发

    在《jQuery插件开发全解析.pdf》这份文档中,作者可能详细阐述了插件开发的各个步骤,包括如何封装私有函数、如何处理回调函数、如何利用jQuery的data方法存储插件状态,以及如何优化性能。此外,还可能涉及如何与...

    50个jquery插件介绍

    "50个jQuery插件介绍"的文档可能会详细解析每个插件的用途、使用方法、示例代码以及可能遇到的问题和解决方案。阅读并实践这些插件,将有助于提升你的前端开发技能,让你能够更快地构建功能丰富、交互性强的网页应用...

    jquery插件大全

    3. 调用插件:在DOM加载完成后(通常在`$(document).ready()`内),通过选择器调用插件方法,例如`$('img').zoomimage();`。 ### 4. 自定义jQuery插件 如果你需要创建自己的jQuery插件,可以按照以下步骤: 1. ...

Global site tag (gtag.js) - Google Analytics