命名空间
复制一份维基百科的说法:
命名空间(英语:Namespace)表示标识符(identifier)的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。
简单点说:
假如网吧里有好多人,都没有名字的话,你妈妈喊你回家吃饭的时候,该怎么叫谁呢? 所以聪明的妈妈,给你起了一个名字,下次妈妈只需要站在门口大喊一声“xx,回家吃饭了!”
jQuery命名空间的出现
注意这里说的只是jquery1.7,因为它推荐大家使用 on 代替以前的 bind,使用 off 代替以前的 unbind。因为所有的事件都是通过 on 来绑定的。
好嘞!绑一个试试
代码如下 | 复制代码 |
$(document).on('click', function(){ .... }); |
挺好用,为了不让它多次触发,我要解绑掉
代码如下 | 复制代码 |
$(document).off('click') |
细心的同学可能已经发现了,如果我只想解绑某个特定的事件,就比较蛋疼了,举个栗子!
代码如下 | 复制代码 |
$(document).on('click', function(){ console.log(1111); }); $(document).on('click', function(){ console.log(222); }); $(document).on('click', function(){ console.log(333); }); |
我觉得 打印出111的比较不合群,想踢出去,这时候会不会很无语呢?
聪明的你马上想到 我可以这样啊!
代码如下 | 复制代码 |
function a(){ $(document).on('click', a); |
是滴! 你可以这样!但是你不觉得很麻烦么?
我们可以这样
代码如下 | 复制代码 |
$(document).on('click.a', function(){ console.log(123); }) $(document).off('click.a'); |
该方法最早出现在jQuery1.3.2中
代码实现如下(1.3.2中的实现):
代码如下 | 复制代码 |
// Namespaced event handlers // Get the current list of functions bound to this event if ( jQuery.event.specialAll[type] ) // Init the event handler queue // Check for a special event handler |
命名空间配合trigger的使用
代码如下 | 复制代码 |
$(document).on('click.a', funciton(){ $(document).trigger('click.a'); //output: 111 |
还可以这样
代码如下 | 复制代码 |
$(document).on('click.a', funciton(){ $(document).trigger('click!'); //output: 222 |
注意:
! 在jquery1.9之后被删除相应实现
事件绑定命名空间
命名空间方式的一般使用:
代码如下 | 复制代码 |
$('.class').bind('click.namespace', function(){}); |
同一个命名空间的事件可以直接用命名空间批量解绑。
代码如下 | 复制代码 |
$('.class').bind('click.namespace', function(){});
|
相关推荐
在JavaScript编程中,全局变量和函数常常会导致命名冲突,特别是在...对于`registNamespase.js`的具体内容,需要实际查看代码才能提供详细的解析和示例,但上述信息应该为你提供了理解和使用jQuery命名空间的基本框架。
本文将深入分析jQuery.js的核心执行流程,帮助读者理解其内部机制,尤其是jQuery如何利用构造函数和原型链实现其强大的功能。 #### 二、jQuery的基础构建 1. **防止重复加载**: 在jQuery的加载过程中,首先会...
2. PHP高级特性:包括对象编程、命名空间、文件和目录操作、数据库交互(如MySQLi或PDO)、会话管理、cookies、错误和日志记录等。 3. jQuery基础:介绍如何引入jQuery库,理解选择器、DOM操作、事件处理、动画效果...
根据所提供的文件内容,本节将深入分析如何构建jQuery对象及其核心构造逻辑。首先,让我们从整体上理解jQuery构造函数的设计思路。 ##### 总体结构 在jQuery的源码中,通过立即执行函数表达式(IIFE)来定义jQuery...
6. **jQuery插件开发**:深入部分,读者将学习如何设计和实现自定义的jQuery插件,包括插件结构、命名空间、选项和回调函数的使用,从而拓展jQuery的功能。 7. **源码分析**:附带的源代码可以帮助读者更好地理解和...
})()`,这是一个立即执行的函数表达式(IIFE),确保了jQuery对象在全局作用域中被定义,但不会污染全局命名空间。内部的`jQuery`函数是构造函数,用于创建jQuery对象实例。在jq2处,我们可以看到构造函数接受两个...
这里使用了 IIFE 来创建一个私有作用域,这样可以避免污染全局命名空间,并且允许 jQuery 内部定义私有变量和方法。 #### 三、jQuery 构造函数 ```javascript var jQuery = function(selector, context) { return...
源码中,我们可以学习到如何利用$.fn.extend()来添加新的方法,以及如何利用命名空间和闭包保持插件的独立性。 6. **性能优化** - 遍历优化:jQuery提供了多种遍历DOM的方法,如`.each()`和`.map()`。源码中,我们...
该函数接收两个参数:`window`对象和`undefined`,后者用于确保即使在全局命名空间中存在`undefined`变量的情况下,代码仍然可以正常运行。 #### 核心变量定义 - `rootjQuery`: 提供了一个对整个文档的根jQuery...
1. **模块化编程**:书中会介绍如何使用命名空间、立即执行函数表达式(IIFE)以及AMD(Asynchronous Module Definition)和CommonJS模块加载机制来组织代码,避免全局变量污染,提高代码的可复用性和可测试性。...
`监听`mousedown`事件,这里还使用了命名空间(`.chartdrag`)来区分不同的事件处理程序。 - 获取鼠标按下时的位置(`downX`, `downY`)以及元素的初始位置(`downLeft`, `downTop`)。 4. **处理鼠标移动事件**:...
6. **插件架构**:学习如何编写可复用的jQuery插件,包括命名空间、参数传递和暴露公共方法。 通过深入研究这个实例,你可以提高自己的jQuery技能,同时也可以学习如何创建自己的自定义插件,从而提升你的Web开发...
2.1.1版本引入了一些新的API,如`.on()`的命名空间功能,增强了事件处理的灵活性。此外,这个版本的$.ajax()函数也有了改进,如支持跨域请求的CORS配置。 最后,jQuery 3.1.1是2016年的发布,标志着jQuery进入了3.x...
这主要是因为Ecshop默认使用了一套自定义的JavaScript函数库(如eCS),而这些函数库与jQuery存在命名空间上的重叠或函数名相同的情况。当两者同时存在于同一个页面时,就可能发生冲突,导致某些功能失效。 #### ...
我们可以看到,jQuery使用了闭包来保护内部变量,以及立即执行函数(IIFE)来避免污染全局命名空间,这些都是JavaScript高级编程技巧的体现。 在DOM操作方面,jQuery提供了一套优雅的API,如`$(selector)`用于选取...
`jQuery.event.trigger`是触发所有类型事件的支持API,主要包括普通浏览器事件(可能包含命名空间)和自定义事件。它不采用`.click()`等直接触发事件的捷径,而是采用统一的处理流程: 1. 获取要触发的事件,如果...
1. **源码结构**:理解jQuery的模块化设计,如如何组织函数和类,以及如何通过命名空间和闭包来管理作用域。 2. **性能优化**:学习jQuery如何通过缓存DOM查询结果、延迟执行和选择器优化等方式提高性能。 3. **...
通过封装功能并利用jQuery的命名空间和插件模式,可以创建复用性强的代码模块。 通过研究《锋利的jQuery》实例源码,读者可以加深对jQuery核心概念的理解,并且能够在实际项目中灵活应用。同时,这些源码也展示了...
在.NET中,可以使用XML解析器如System.Xml命名空间中的类来读取和解析RSS XML文档。解析后的数据可以被存储到服务器端的数据结构中,然后通过Ajax请求传递到客户端,由jQuery处理并展示在页面上。 此外,考虑到项目...
作者分享了许多最佳实践,如避免全局变量污染、使用命名空间、编写可重用的函数和模块化代码等。这些技巧有助于提高代码的可读性、可维护性和性能。 ### 实战案例分析 《jQuery in Action Second Edition》不仅仅...