文档章节

jQuery在不造成全局冲突的情况下使用$别名

23fss
 23fss
发布于 2014/03/21 09:45
字数 427
阅读 135
收藏 0

问题

你希望使用快捷方式$来代替全局命名空间名称jQuery的名称,而又不用担心会造成全局冲突

解决方案

在这里的解决方案是创建一个匿名的自调用函数,将jQuery对象传递给这个函数,然后将$字符当做指向jQuery对象的一个参数。 例如:所有的jQuery代码可以封装在如下的自调用函数中:

<!-- lang: js -->
(function($){//使用$参数创建私有作用域的函数
    //私有作用域和$的使用无须担心抽鞥图
})(jQuery);//调用匿名函数并将其传递给jQuery对象

讨论

实际上,这里做的就是将jQuery的全局对象引用传递给一个创建私有作用域的函数。如果没有这么做,而是直接在全局作用域内使用简写的$别名,就必须假定包含在HTML文档中的其他脚本(或者未来包含的脚本)都没有使用$字符,这是有一定风险的。当你能够创建私有作用域,何必去冒险呢?

这样做的另一个好处是包含在匿名的自调用函数中的代码将会运行在自己的私有作用域中。可以确信,在该函数中放置的任何内容都绝不会和全局作用域中编写的其他JavaScript代码有冲突,为什么要冒着冲突的风险呢?你要做的仅仅是创建一个私有作用域罢了!

有关匿名函数和私有作用域,请看私有作用域的介绍

© 著作权归作者所有

23fss
粉丝 8
博文 53
码字总数 26893
作品 0
青岛
程序员
私信 提问
jQuery.noConflict() 函数详解

jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权。 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQuery("p")和$("p")是等价的。由于...

鱼煎
2015/07/20
233
0
谈谈 jQuery 中的防冲突(noConflict)机制

许多的 JS 框架类库都选择使用 $ 符号作为函数或变量名,jQuery 是其中最为典型的一个。在 jQuery 中,$ 符号只是 window.jQuery 对象的一个引用,因此即使 $ 被删除,window.jQuery 依然是保...

i33
2013/03/13
69
0
(function($){...})(jQuery)的意思

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

hhhhfengxing
2013/12/23
59
0
解决jQuery和其它库的冲突

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它javascript类库一起使用时,不会引起冲突.(注意:默认情况下,jQu...

Junn
2013/01/21
251
0
第80天:jQuery插件使用

jQuery其他补充 + 4.1 链式编程: end()补充 补充五角星 评论案例 第一步:鼠标移入,当前五角星和前面的五角星变实体。后面的变空心五角星 第二步:鼠标点击的时候,为当前元素添加clicked...

半指温柔乐
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
25分钟前
6
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
26分钟前
5
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
34分钟前
9
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
59分钟前
5
0
Redis

一、Redis支持的几种数据类型:字符串、List、SET、HASH、ZSET 二、Redis的缓存技术主要是为了降低关系数据库的负载并减少网站成本 三、在Redis里面,被MULTI命令和EXEC命令包围的所有命令会...

BobwithB
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部