前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jQuery中$.fn的用法

jQuery中$.fn的用法

原创
作者头像
用户1349575
发布2022-03-18 12:25:43
1.5K0
发布2022-03-18 12:25:43
举报
文章被收录于专栏:编程社区编程社区

在jQuery插件中,常常看见这样的结构,开始自己也是不理解后来通过查阅资料,慢慢的理解其中的大意,所以先总结出来。

代码语言:javascript
复制
(function( $, window, document, undefined ){}){undefined
 
      //...code
 
}(jquery,window,document)
1.立即执行函数:(function(){})()

这是一个自调函数,函数定义好之后自动执行。(function(){})表示一个匿名函数,而后面紧跟着的()表示立即调用此函数。而且()也是向函数传递参数的地方。

比如:

代码语言:javascript
复制
;(function(){undefined
     alert("立即执行");
})();
 
(function(parameter){undefined
    alert(parameter);
})("立即执行函数传递参数");

使用此函数的好处是,不会产生任何全局变量。缺点是无法重复执行。对于插件来说,是最合适不过的了。不会产生任何全局变量,同时一次引用就够了。

2.传递参数(jQuery,window,document)

$ 实参:$是jQuery的缩写,很多方法和类库也都使用$,这里表示接受jQuery对象,避免冲突

window,document实参:分别接受 window document对象。window,document 对象都是全局环境下的,而在函数体内的window document对象是局部的,这样做有个好处就是,提高性能,减少作用域链的查询时间。如果你在函数体内需要多次调用window 或 document对象,这样把window 或 document对象当作参数传进去,这样做是非常有必要的。当然如果你的插件用不到这两个对象,那么就不用传递这两个参数了。

3.ndefined形参:看起来是有点多余。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined

4.“;”分号作用:

防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。

5.$.fn的用法

举个例子:

代码语言:javascript
复制

 
<div id="myDiv"></div>
 
(function( $, window, document, undefined ){}){undefined
    $.fn.extend({undefined
        test:function(){undefined
                alert($(this).attr("id"));
        }
    });
 
}(jquery,window,document)
 
$("#myDiv").test();
 
//结果:myDiv
 
 
(function( $, window, document, undefined ){}){undefined
    $.extend({undefined
        test:function(){undefined
                alert("好好活着");
        }
    });
 
}(jquery,window,document)
 
$('#myDiv').test();
 
//结果:好好活着

前者是绑定在dom元素上面的插件,后者是绑定在jQuery上的插件 

$.fn是指jQuery的命名空间,加上fn的方法及属性,会对jQuery实例有效。

如扩展$.fn.abc(),即$.fn.abc()是对jQuery扩展了一个abc()方法,在每一个jquery实例都可以引用这个方法,例如

$("#div").abc();

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

jquery.extend(object);为扩展jquery类本身.为类添加新的方法

jquery.fn.extend(object);给jquery对象添加方法

fn原型:查看jquery可知

代码语言:javascript
复制
jQuery.fn = jQuery.prototype ={ 
   init: function( selector, context ){//....  
   //...... 
};
jquery.fn = jquery.prototype 

jquery本身就是一个封装得很好的类,比如我们用语句 $("div")会生成一个jquery类的实例。

jquery.extend(object);为jquery类添加类方法,可以理解为添加静态方法。

如:

代码语言:javascript
复制
$.extend({undefined
    add:function(a,b){undefined
        return a+b;
    }
});
 
 $("#div").add(3,4);//return 7

这样便为jquery添加一个为add 的方法,之后便可以在引入jquery的地方,使用这个方法了;

$.fn.extend(object);对jquery添加成员函数、jquery类的实例 可以使用这个成员函数。

列如 编辑被点击时,弹出当前编辑框里面的内容。

代码语言:javascript
复制
$.fn.extend({undefined
    alertWhileClick:function(){undefined
        $(this).click(function(){undefined
            alert($(this).val());
        });        
    }
});
 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档