当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式、良好的浏览器兼容性赢得了软件研发同行的青睐,作为其中的一员,自然也不例外,尽管刚开始时很排斥Jquery,今天我谈一下对Jquery中$与$.fn的认识和理解,不对地方深望指正:

1、什么是$?

答:jquery的另一种表现形式;

2、看下面的例子:

例子01:

 1  <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 01</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.test = function(a,b) {
8 return a+b;
9 };
10 alert($.test(4,4));
11 </script>
12 </head>
13 <body>
14 </body>
15 </html>

2.

 1   例子02:
2
3 <html>
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
6 <title>$与$.fn的区别——demo 02</title>
7 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
8 <script type="text/javascript">
9 $.extend({
10 test:function(a,b) {
11 return a+b;
12 }
13 });
14 alert($.test(4,4));
15 </script>
16 </head>
17 <body>
18 </body>
19 </html>

上面两个例子中的黄色背景出的代码有什么不同和相同?

答:除了功能相同以外最大的相同点在于调用函数(或方法)的方式相同;上面两个例子最大的不同点在于声明创建test方法的方式不同。

3、看下面的例子:

例子03:

 1                    <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 03</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.fn.test = function() {
8 return $(this).val();
9 };
10 $(function(){
11 alert($("#name").test());
12 });
13 </script>
14 </head>
15 <body>
16 <input type="hidden" id="name" name="name" value="高焕杰"/>
17 </body>
18 </html>

例子04:

 1                <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 04</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.fn.extend({
8 test:function() {
9 return $(this).val();
10 }
11 });
12 $(function(){
13 alert($("#name").test());
14 });
15 </script>
16 </head>
17 <body>
18 <input type="hidden" id="name" name="name" value="高焕杰"/>
19 </body>
20 </html>

上面两个例子中的绿色背景出的代码有什么不同和相同?

答:除了功能相同以外最大的相同点在于调用函数(或方法)的方式相同;上面两个例子最大的不同点在于声明创建test方法的方式不同。

4、Jquery中$与$.fn的区别是什么?

答:在回答这个问题以前,需要明白一个事实:Jquery的方法是可以拓展的,上面这4个例子都是对Jquery方法的拓展,从调用声明创建方法的方式来看,可以归结为两类:一类直接由$符调用;另一类由$("")来调用,说到这里你是不是想到了Java语言中的静态方法和实例方法,是的,如果从java类的角度认识调用创建的Jquery方法可能更好理解些,尽管Javascript没有明确的类的概念。好了现在可以回答问题了:$拓展的方法是静态方法,可以使用$直接调用,其拓展的方式有两种,一般使用$.extend({});;而$.fn拓展的方法是实例方法,必须由“对象”$("")来调用,其拓展的方式同样有两种,一般使用$.fn.extend({ })。

5、知识延展,究竟什么是fn?

答:同样在回答这样一个问题以前请打开一个Jquery文件(0分下载) 搜索这样一个字符“jQuery.prototype”,告诉我你看到了什么:jQuery.fn = jQuery.prototype = {......},嗯嗯,或许你已经猜到了——fn就是prototype,是这样吗?请看下面的两个例子:

例子05:

 1         <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 05</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.prototype.test = function() {
8 return $(this).val();
9 };
10 $(function(){
11 alert($("#name").test());
12 });
13 </script>
14 </head>
15 <body>
16 <input type="hidden" id="name" name="name" value="高焕杰"/>
17 </body>
18 </html>

例子06:

 1        <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4 <title>$与$.fn的区别——demo 06</title>
5 <script type="text/javascript" src="./jquery-1.6.2.js"></script>
6 <script type="text/javascript">
7 $.prototype.extend({
8 test:function() {
9 return $(this).val();
10 }
11 });
12 $(function(){
13 alert($("#name").test());
14 });
15 </script>
16 </head>
17 <body>
18 <input type="hidden" id="name" name="name" value="高焕杰"/>
19 </body>
20 </html> http://www.cnblogs.com/sharpest/p/6271039.html

Jquery中$与$.fn的区别的更多相关文章

  1. jquery的$.与$.fn的区别

    这个是jquery插件的形式,举个例子: <div id="myDiv"></div> (function($){ $.fn.extend({ test:f ...

  2. jQuery extend()和jQuery.fn.extend()区别和详解

    1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...

  3. $.extend() 或 jQuery.extend() 与 $.fn.Xxx 或 jQuery.fn.extend(object) 之jQuery插件开发

    jQuery为开发插件提拱了两个方法 语法现象1:$.extend() 或 jQuery.extend() 或 jQuery.extend(object)//可以理解为为jQuery类添加类方法或静态 ...

  4. jQuery介绍 DOM对象和jQuery对象的转换与区别

    jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍      jQuery: http://jquery.com/      write less, do more.   j ...

  5. Jquery中$与$.fn的差别

    当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式.良好的浏览器兼容性赢得了软件研发同行的青睐,作为当中的一员,自然也不例外,虽然刚開始时非常排斥Jquery,今天我谈一下对J ...

  6. jquery中onclick="fn"中$(this)所代表的对象

    jquery中onclick="fn"中$(this)所代表的对象 js方法 function qiehuan(){ var src = $(this).attr("da ...

  7. jquery生产和开发的区别

    今天说一下jquery生产和开发的区别,在我们下载jquery的时候,会有两个下载链接,一个是jquery.min.js .迷你版 (生产),另一个是 jquery.js .开发版 .不知道的人可能就 ...

  8. JQuery this和$(this)的区别及获取$(this)子元素对象的方法

    1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这 ...

  9. jquery中的$.fn的用法

    JQuery里的原型prototype分析       http://www.nowamagic.net/librarys/veda/detail/653 jquery中的$.fn的用法       ...

随机推荐

  1. 使用java中for循环,循环打印出五角星--

    //5.0 输出五角星        int touHigh = 6;        int jianHigh = 25 ;        int kuang =50;        for (int ...

  2. 洛谷P4586 [FJOI2015]最小覆盖双圆问题(最小圆覆盖)

    题面 传送门 前置芝士 最小圆覆盖 题解 我们按照\(x\)坐标排序,然后二分中间点,把点分成左右两边,对两边都做一个最小圆覆盖,那么半径大一点的那个就是答案了.然后对半径大的那一边继续二分就行了 然 ...

  3. jquery中通过trim() length 判断数据是否有值

    在jquery中可以通过如下方式判断某一个字符串是否有值,结合if else if 语句进行业务逻辑的处理 <!DOCTYPE html> <html lang="en&q ...

  4. Maven的Mirror和Repository 的详细讲解

    1 Repository(仓库) 1.1 Maven仓库主要有2种: remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问 local repository ...

  5. VMware 虚拟机报错解决

    Could not apply the stored configuration for monitors none of the selected modes were compatible wit ...

  6. 使用selenium的WebDriver和ChromeDriver实现UI自动化

    下载chromedriver chromedriver与chrome的对应关系表:http://blog.csdn.net/huilan_same/article/details/51896672 下 ...

  7. 此博客不再维护,请移步http://daiweilai.github.io/

    此博客不再维护,请移步新博客 http://daiweilai.github.io/ 新开的这个博客系统,托管在了Github.io上,喜闻乐见的Jekll加借鉴(抄袭)的精美主题构建而成,反正样子应 ...

  8. net 反编译神器

    文章地址:https://www.cnblogs.com/sheng-jie/p/10168411.html dnSpy官网下载  分享链接 .net core源码导航 https://www.cnb ...

  9. python 报错: Dog() takes no arguments

    后来上网找了一下.发现是 构造方法 __init__ 两边的下划线是双下划线,我写的是单下划线. 读书不认真,该打. 特此记录.

  10. [转] CDH6 安装文章链接收集

    CentOS 7下Cloudera Manager及CDH 6.0.1安装过程详解 http://blog.51cto.com/wzlinux/2321433?source=dra Cloudera ...