首页 > 其他分享 >jQuery中$.fn的用法

jQuery中$.fn的用法

时间:2022-11-17 11:03:13浏览次数:46  
标签:jQuery jquery function 用法 window document fn

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

(function( $, window, document, undefined ){}){
 
      //...code
 
}(jquery,window,document)

1.立即执行函数:(function(){})()

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

比如:

;(function(){
     alert("立即执行");
})();
 
(function(parameter){
    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的用法

举个例子:
 
<div id="myDiv"></div>
 
(function( $, window, document, undefined ){}){
    $.fn.extend({
        test:function(){
                alert($(this).attr("id"));
        }
    });
   
}(jquery,window,document)
 
$("#myDiv").test();
 
//结果:myDiv
 
 
(function( $, window, document, undefined ){}){
    $.extend({
        test:function(){
                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可知

jQuery.fn = jQuery.prototype ={ 
   init: function( selector, context ){//....  
   //...... 
};

jquery.fn = jquery.prototype 

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

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

如:

$.extend({
    add:function(a,b){
        return a+b;
    }
});
 
 
$("#div").add(3,4);//return 7

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

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

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

$.fn.extend({
    alertWhileClick:function(){
        $(this).click(function(){
            alert($(this).val());
        });        
    }
});

原文链接:https://blog.csdn.net/zhengbusi/article/details/81207442

 

另一篇整理比较好的文章:

学习jQuery这一篇就够了

https://caochenlei.blog.csdn.net/article/details/109683256

作者还有好多学习。。这一篇就够了文章

标签:jQuery,jquery,function,用法,window,document,fn
From: https://www.cnblogs.com/djd66/p/16898713.html

相关文章

  • 【c&c++】C语言中#ifdef,#ifndef和#endif的作用
    现在规定一下头文件书写规范,根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中。否则如果出现有定义,比如头文件中有inta=2;如......
  • Android 中String.format()的用法
    ​%s字符串类型:Strings=String.format("程序员:%s","小白");System.out.println(s);输出结果:I/System.out:程序员:小白%d整数类型(十进制):privateintage=20;......
  • group by用法
    groupbyselectDepartmentIDfromBasicDepartmentgroupbyDepartmentID注意:在使用groupby时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,......
  • Android 中选项菜单(Option menu)的用法
    先看下效果:菜单在程序中使用颇为广泛,几乎所有的桌面应用都含有菜单。Android的菜单分为三种类型optionmenu:选项菜单contextmenu:上下文菜单popupmenu:弹出菜单本文讲......
  • Map函数的用法
    1.使用场景项目中,前端开发人员通常会对后端返回的数据进行修改,经常使用过map函数2.语法用法通常用来遍历数组,可以返回一个新的数组。并且不会更新原本数组的数......
  • jquery 选择下一个子标签选择器
      <p><labelfor="p1">计划1:</label><inputtype="text"name="p1c"id="p1c"value="50">%<inputtype="text"name=......
  • jquery.dataTables简单使用
    <scripttype="text/javascript"language="javascript"src="jquery/jquery-3.6.0.min.js"></script><linkrel="stylesheet"type="text/css"href="dataTable/css/jqu......
  • jquery dom 查找元素
    $("div");//所有div元素$(".item");//class为item的元素$("#content");//id为content的元素$("#contentp");//id为content内的p元素$("#contentp,......
  • 20.JQuery基础
    概述1.jQuery提供了强大的元素选择器2.jQuery对css样式操作的支持,可以对class删除增加替换,支持对单个声明的修改3.jquery对DOM进行了封装,极大简化了js对DOM的增删改查......
  • jquery要点
    Jquery用jquery来隐藏、显示、修改结点,并触发动作,进行ajax请求基本语法通过选取HTML元素,并对选取的元素执行某些操作$(selector).action()文档就绪事件$(docu......