Jquery中$与$.fn的区别

Jquery中$与$.fn的区别

当今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>

上面两个例子通过将fn改为prototype以后可以运行,呵呵呵,你猜对了。

原文地址:https://www.cnblogs.com/UUUz/p/11969627.html

时间: 2024-10-11 01:38:35

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

jquery的$.与$.fn的区别

这个是jquery插件的形式,举个例子: <div id="myDiv"></div> (function($){ $.fn.extend({ test:function(){ alert($(this).attr('id')); }})})(jQuery) $('#myDiv').test();打印出 : myDiv (function($){$.extend({test:function(){alert('111');}})})(jQuery)$.test(

jQuery中的$.fn.data数据缓存

$.fn.data.$.fn.attr.$.fn.prop区别 $.fn.data.$.fn.attr.$.fn.prop的使用方法都差不多,但是他们的用法不一样. 1 <script src="jQuery.js"></script> 2 <div id="div"></div> 3 <script> 4 $(function(){ 5 var $div = $('#div'), 6 oDiv = doc

jQuery - 01. jQuery特点、如何使用jQuery、jQuery入口函数、jQuery和DOM对象的区别、jQuery选择器、

this指的是原生js的DOM对象 .css(""):只写一个值是取值,写俩值是赋值 window.onload   ===   $(document).ready(); $(""):获取元素   标签名..类名.#id jQuery特点 链式编程 jq.shou(3000).html(内容) 相当于 jq.shou(3000) jq.gtml(内容) 隐式迭代 隐式实用for循环.迭代 如何使用jQuery 引包 一定要在使用之前 <script src =

jquery之empty()与remove()区别

jquery之empty()与remove()区别 要用到移除指定元素的时候,发现empty()与remove([expr])都可以用来实现.可仔细观察效果的话就可以发现.empty()是只移除了 指定元素中的所有子节点,拿$("p").empty()来说,他只是把<p>dsfsd</p>中的文本给移除了,而留下 了<p></p>,仍保留其在dom中所占的位置.remove([expr])则是把其从dom中删除,而不会保留其所占的位置.例

JQuery中的each()的使用

each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象.数组的属性值并进行处理. jQuery和jQuery对象都实现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法.换句话说:jQuery提供的each方法是对参数一提供的对象的中所有的子元素定州市科技工业局逐一进行方法调用.而jQuery对象提供的each方法则是对jQuery内部的子元素进行逐个调用. jQuery.prototy

javascript 与 jquery 中的函数调用的区别

标签:例如<input id="btn_show" type="button" onclick="show()" /> <script type="text/javascript"> $(function(){ function show(){ -- } }) function show(){ -- } </script> 注意, 此时button的点击事件不会调用jquery中的show(

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

1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQuery(),即$(this)=jquery();也就是说,这样可以返回一个jquery对象.那么,当你在网页中alert($('#id'));时,会弹出一个[object Object ],这个object对象,也就是jquery对象了. 那么,我们

jquery生产和开发的区别

今天说一下jquery生产和开发的区别,在我们下载jquery的时候,会有两个下载链接,一个是jquery.min.js .迷你版 (生产),另一个是 jquery.js .开发版 .不知道的人可能就好奇了,是什么呢,其实 生产版就是把能省略的占空间的都删除了,比如空格,所有的代码都是一堆,不适合查阅,所以称为生产版,就是为 了节省空间.那么反过来开发版的jquery适合查阅和研究.两个版本的代码一模一样,只是排版有一些问题吧. 今天刚了解到jquery升级到2.0了,有一些新的特性,整体大小比

Jquery中$与$.fn的差别

当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式.良好的浏览器兼容性赢得了软件研发同行的青睐,作为当中的一员,自然也不例外,虽然刚開始时非常排斥Jquery,今天我谈一下对Jquery中$与$.fn的认识和理解,不正确地方深望指正: 1.什么是$? 答:jquery的还有一种表现形式: 2.看以下的样例: 样例01: <html> <head> <meta http-equiv="Content-Type" content=&qu