1.写在前面

  大家都知道PHP专注后台与数据库的交互,前端页面中是js的天下,而jQuery作为使用最广泛,最简单有效的js的框架。深受大家的喜欢。

  而js作为一门面向对象的开发语言,它独特的语法和函数式的写法,也是妙趣横生。使用jQuery进行插件的开发,就能将一些js的函数封装在一个对象中,并对其扩展,提高了开发的效率,体现了面向对象的优越性。

2.下面是正题

  主要有两种形式的jQuery的插件形式:

  1)对象的形式扩展插件 $.fn.extend 

  2)函数的形式扩展插件 $.extend

  这里我们直接给出两个例子:

  1)对象形式的插件实现的功能是 鼠标点击Input输入框时,弹出其Value值

  2)函数形式的插件实现的功能是 鼠标移出Input输入框时,弹出其title值

  大家可以仔细揣摩,两者的不同,在此基础上,写出功能更强大,更健壮的jQuery的插件

  代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<input id="input" name="name" value="我喜欢jQuery" title="我喜欢js">
<script src="http://www.eol.cn/js/global/jQuery_latest.min.js">
</script>
<script>

/*************编写插件***********/

/*

*1. 对象的形式扩展插件 $.fn.extend   调用 $("#idname").functionName();

*/
(function($){
      $.fn.extend({
        showVal : function(){
           var $this = $(this);
           $this.click(function () {//点击时显示里面的数值
               alert($this.val());
               
           })
           
   }

})(jQuery);

//

/*

*2. 函数的形式扩展插件 $.extend   调用 $.functionName();

*/

$.extend({
        showTitle : function(){
           
           $('#input').mouseout(function () {//鼠标移出时弹窗
              var $this = $(this);
               alert($this.attr('title'));
               
           })

}

})

})(jQuery)

$(function(){

$("#input").showVal();//1. 对象的形式扩展插件 $.fn.extend   调用 $("#idname").functionName();
$.showTitle();//2. 函数的形式扩展插件 $.extend   调用 $.functionName();

})
</script>
</body>
</html>

总结:

jQuery为开发插件提拱了两个方法,分别是:

jQuery.fn.extend(object);  给jQuery对象添加方法。
jQuery.extend(object);  为扩展jQuery类本身.为类添加新的方法。

1) jQuery.fn.extend(object);

fn 是什么东西呢。查看jQuery代码,就不难发现。

jQuery.fn = jQuery.prototype = {

init: function( selector, context ) {//.... 

//......

};

原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。jQuery便是一个封装得非常好的类,比如我们用 语句 $("#input") 会生成一个 jQuery类的实例。

jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

上面的列子中 $("#input") 为一个jQuery实例,当它调用成员方法 showVal()后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。

2) jQuery.extend(object); 

为jQuery类添加添加类方法,可以理解为添加静态方法。如:

$.extend({

add:function(a,b){return a+b;}

});

便为 jQuery 添加一个为 add 的 “静态方法”,之后便可以在引入 jQuery 的地方,使用这个方法了,$.add(3,4); //return 7

by  djp

转载于:https://www.cnblogs.com/newbalanceteam/p/4984928.html

小议jQuery插件开发相关推荐

  1. jQuery插件开发 - 其实很简单

    [前言] jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常有人询问一些技巧,因此干脆写这么一篇 ...

  2. jquery 插件开发的作用域及基础

    2019独角兽企业重金招聘Python工程师标准>>> 之前一直有开发jquery插件的冲动,所以一直想学习如何进行插件开发,最近一个项目需要使用图片上传组件及自动无限下拉组件,百度 ...

  3. jQuery插件开发学习笔记

    今天想了解一下jQuery的插件开发,于是google了一下,列在前面的两篇文章都很不错,jQuery插件开发全解析 更是将插件开发的方方面面细致入微的进行了讲解,并提供了PDF进行下载.笔者今天详细 ...

  4. jQuery插件开发(一):jQuery类方法

    一.jQuery插件开发的方法 jQuery插件的编写方法主要有两种: 1.基于jQuery对象的插件 2.基于jQuery类的插件 二.基于jQuery类的插件 1.什么是jQuery类的插件? j ...

  5. jQuery插件开发的两种方法及$.fn.extend的详解

    2019独角兽企业重金招聘Python工程师标准>>> 作者: 字体:[增加 减小] 类型:转载 时间:2014-01-16 我要评论 jQuery插件开发分为两种:1 类级别.2 ...

  6. 【转载】jQuery插件开发精品教程,让你的jQuery提升一个台阶

    jQuery插件开发精品教程,让你的jQuery提升一个台阶 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样, ...

  7. jQuery插件开发中$.extend和$.fn.extend辨析

    jQuery插件开发分为两种:   1 类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery. ...

  8. JQuery学习使用笔记 -- JQuery插件开发

    内容转载自 http://www.css88.com/archives/4821 扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最 ...

  9. 掌握jQuery插件开发,这篇文章就够了

    2019独角兽企业重金招聘Python工程师标准>>> 在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先 ...

最新文章

  1. oracle的存储过程调试,oracle 运行普通方式及调试debug方式存储过程性能区别
  2. 腾讯首席战略官詹姆斯: 从互联网信息的永久性和稀缺性看腾讯的投资逻辑
  3. java hibernate详细_Java事务管理学习之Hibernate详细介绍
  4. html列表无序嵌套,HTML/CSS - 如何正确定位这些嵌套的无序列表?
  5. Jenkins安装目录说明
  6. linux6.5怎样安装vim,在Centos 6.5下成功安装和配置了vim7.4
  7. 报修管理系统微信小程序源码
  8. 三种简单的浏览器设置自动刷新网页
  9. 笔记:毫米波雷达传感器,优势、应用和产业规模
  10. 青春,让人想念,却再也闻不到了
  11. UI设计(用户界面设计)的好处
  12. c语言处理nc程序,NC程序的语言问题
  13. 一文看懂企业数据资产目录
  14. [No00002A]26个英语字母的原始象形意义、含义、产生及发展历史
  15. 每一个被别人吃得死死的人,其实是…
  16. mac修改mysql密码(亲测)
  17. 天龙八部武夷千年冰魄
  18. 软工之404 Note Found团队
  19. 深度优先搜索(DFS)和广度优先搜索(BFS)两种算法c++
  20. Vue学习——Uncaught TypeError: “i“ is read-only

热门文章

  1. android开源数据库,Android Hawk数据库 github开源项目
  2. 唱歌如何保持高位置_高段位女生是如何做到保持新鲜感,让男朋友爱她多年如一日的?...
  3. android dialog动画_Android超级酷炫实用的UI框架
  4. mysql grant show_【汇总】mysql常用操作【grant,show】
  5. supersocke接收不到数据_豪横吗?易查分除了上传电子表格,复制粘贴也能上传数据啦!...
  6. java 代码段 执行超时 抛异常_Java 并发队列详解TransferQueue、BlockingQueue、BlockingDeque
  7. .netcore 判断是否 ajax 请求_第3部分-异步使用2-2:Ajax 之 状态码
  8. java请求超时异常捕获_我异常了,快来捕获我,Java异常简述
  9. linux arm9开发环境,ARM9开发板Qt环境的搭建
  10. linux配置erp访问端口_nginx配置相同端口号访问多个项目