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> http://www.cnblogs.com/sharpest/p/6271039.html
Jquery中$与$.fn的区别的更多相关文章
- jquery的$.与$.fn的区别
这个是jquery插件的形式,举个例子: <div id="myDiv"></div> (function($){ $.fn.extend({ test:f ...
- jQuery extend()和jQuery.fn.extend()区别和详解
1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...
- $.extend() 或 jQuery.extend() 与 $.fn.Xxx 或 jQuery.fn.extend(object) 之jQuery插件开发
jQuery为开发插件提拱了两个方法 语法现象1:$.extend() 或 jQuery.extend() 或 jQuery.extend(object)//可以理解为为jQuery类添加类方法或静态 ...
- jQuery介绍 DOM对象和jQuery对象的转换与区别
jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍 jQuery: http://jquery.com/ write less, do more. j ...
- Jquery中$与$.fn的差别
当今web开发往往离不开Jquery的使用,Jquery以其简洁的使用方式.良好的浏览器兼容性赢得了软件研发同行的青睐,作为当中的一员,自然也不例外,虽然刚開始时非常排斥Jquery,今天我谈一下对J ...
- jquery中onclick="fn"中$(this)所代表的对象
jquery中onclick="fn"中$(this)所代表的对象 js方法 function qiehuan(){ var src = $(this).attr("da ...
- jquery生产和开发的区别
今天说一下jquery生产和开发的区别,在我们下载jquery的时候,会有两个下载链接,一个是jquery.min.js .迷你版 (生产),另一个是 jquery.js .开发版 .不知道的人可能就 ...
- JQuery this和$(this)的区别及获取$(this)子元素对象的方法
1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的 $() 这 ...
- jquery中的$.fn的用法
JQuery里的原型prototype分析 http://www.nowamagic.net/librarys/veda/detail/653 jquery中的$.fn的用法 ...
随机推荐
- Android 透明状态栏
在 android 4 系统中可以设置透明状态栏. 但在 android 5.0 以上遇到问题.但问题是可以解决的,需要正确的设置 theme. 但是需要注意一点,5以上可以修改 status bar ...
- WordPress插件Social Warfare<=3.5.2 无需登录RCE漏洞
该漏洞只存在于Social Warfare插进的3.5.0.3.5.1和3.5.2版本中,其他版本不存在. 2019年3月21日插件作者紧急发布了3.5.3版本以修复高危的RCE漏洞,在<=3. ...
- C#读入整数
// ClassLibrary1.h #include<iostream> #pragma once using namespace System; namespace ClassLibr ...
- loadrunner代理录制
loadrunner在使用过程中会受到浏览器版本的限制,有些web服务在低版本的浏览器上不能兼容,可通过代理录制的方式解决此问题. 注: (1)本文中的ip仅作示例,要按实际测试情况填写ip. (2) ...
- [bzoj4712]洪水 线段树+树链剖分维护动态dp+二分
Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开了创造模式,然后飞到山顶放了格水.于是小A面前出现了一个瀑布.作为平民的小A只好老实巴交地爬 ...
- [JS] 理解jquery的$.extend()、$.fn和$.fn.extend()
jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); jQuery.fn jQuery.fn = jQuery.prototype ...
- mxonline实战9,我要学习功能块,机构详情展示,收藏功能
对应github地址:第9天 一. 实现我要学习功能
- tomcat运行springboot项目war包
以最简单的spring boot demo项目来演示如何发布项目war包到tomcat,并成功运行(有很多小伙伴会出现404错误) 一.准备一个最简单的demo项目 在IDEA中新建一个项目,一直ne ...
- P4842 城市旅行
题目链接 题意分析 首先存在树上的删边连边操作 所以我们使用\(LCT\)维护 然后考虑怎么维护答案 可以发现 对于一条链 我们编号为\(1,2,3,...,n\) 那么期望就是 \[\frac{a_ ...
- linux 多线程之间信号传递
函数 sigwait sigwait的含义就如同它的字面意思:等待某个信号的到来.如果调用该函数的线程没有等到它想等待的信号那么该线程就休眠.要达到等到一个信号,我们得做下面的事: 首先,定义一个信号 ...