文档章节

(function($){...})(jQuery)的意思

hhhhfengxing
 hhhhfengxing
发布于 2013/12/23 09:33
字数 502
阅读 59
收藏 3

这里实际上是匿名函数

function(arg){...}
这就定义了一个匿名函数,参数为arg

而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
(function(arg){...})(param)
这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数

而(function($){...})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery
var fn = function($){....};
fn(jQuery);

在web开发中可能会同时使用多个javascript库。除了jQuery之外,其他javascript也可能会使用$别名来创建对象。

若要确保jQuery不会与其他库的$对象发生冲突,可以通过运行noConflict函数将变量$的控制权让渡给第一个实现它的那个javascript库。

jQuery.noConflict();

那如何恢复在jQuery中使用别名$呢?
方法是创建并执行一个函数,在这个函数的作用域中仍将$作为jQuery的别名来使用。

具体代码如下:

jQuery.noConflict();

(function($){
$(function(){
//使用$作为jQuery别名的代码
});
})(jQuery);

//所以最后面的(jQuery)不能去掉,去掉的话,代码里面的$可能会成为其他js库的别名。


其他:

用于存放开发插件的代码
(function($){})(jQuery) 这个写法主要的作用还是保证jquery不与其他类库或变量有冲突
 首先是要保证jQuery这个变量名与外部没有冲突(jquery内部$与jQuery是同一个东西 
 有两个名字的原因就是怕$与其他变量名有冲突二jQuery与其他变量冲突的几率非常小)并传入匿名对象,
 匿名对象给参数起名叫做$(其实和jquery内部是一样的)
  然后你就可以自由的在(function($){})(jQuery)里写你的插件而不需要考虑与外界变量是否存在冲突

© 著作权归作者所有

上一篇: Ajax异步刷新
hhhhfengxing
粉丝 1
博文 10
码字总数 1271
作品 0
南昌
程序员
私信 提问
jQuery中 $.fn的用法

jquery $.fn $.fx是什么意思 $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效。 如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个...

-wangming-
2015/02/05
46
0
JQ语法基础知识求助。

;(function($){ $.fn.lavalamp=function(options) { // something }; })(jQuery); // 第一行前面的分号,是什么意思。 最后一行的(jQuery),是什么意思,有什么用。...

天天向上123
2016/06/08
183
1
JS杂谈系列-jquery-插件开发小记

//=======================start(function ($) {//扩展 必须$.fn.extend({ //插件名称 必须colh: function (options) {//默认参数 (放在插件外面,避免每次调用插件都调用一次,节省内存)va...

透笔度
2015/08/04
440
1
请教一个JQuery hover的方法

当.aa#p1在鼠标滑过后,显示.ga#p1,当.aa#p2在鼠标滑过后显示.ga#p2 ,当.aa#p3在鼠标滑过后显示ga#p3,以此类推,一直到p30, 请问诸位有没有一个简单的方法把jquery语句写出来,而不是这样...

林小海
2016/04/25
122
3
java ssh中使用uploadify 出现的貌似是版本问题

原本都好好的 ,突然重新部署了下服务器,发现本地和服务器上,用uploadify选中一个文件后,在上传文件队列中显示的文件名字有中文的都是乱码了~~传到后台是正常的,只是显示由问题。经过各种...

忧郁麦芽
2013/09/11
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
41
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部