`
i5land
  • 浏览: 50386 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

jquery自定义插件命名空间问题

阅读更多
最近项目用到jquery和DWR,此两个框架一起用会出现冲突,解决的方法很简单。给jquery加上命名空间,如:var $j = jQuery.noConflict();以后jquery中在用到$的地方都用$j取代,这样就不会和dwr中的$冲突了。
这个问题解决了,另外一个问题却来了,如果我用$j定义,这样的话,我的js文件中所有的jquery的$地方都需要改成$j,如果一个只有两个还好,如果真有个几十个或者几百个,这简直是个噩梦。于是想到jquery官方插件中里面的(如blockui).js文件中里面也都用了$,而改变其命名空间后却不用更改其js文件中的$,很好奇他是怎么做的看了看源码,发现有这样的一句话
(function($){
       .....
})(jQuery);

在此function中的方法会在加载js文件时候就会调用function($)中的$是形参,而(jQuery)是实参,jQuery是jquery.js中的全局变量,实际上就代表$.所以说即使在外面(jsp或HTML)声明了var $j = jQuery.noConflict();组件js里面的$也不会受到影响

例子如下:test.js
(function($){
       $.test=function(){
	alert("11");
	$("#aa")[0].value="1111111";
    }
})(jQuery);


主文件html如下:
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="test.js" type="text/javascript"></script>
<script>
var $j = jQuery.noConflict();
function test1111(){

}
</script>
</head>
<body>
<input type=="text" value="" id="aa"/>
<input type="button" value="ttt" onclick="$j.test()"/>
</body>
</html>
外面已经用var $j = jQuery.noConflict();定义了命名空间,而test.js里面仍然可以用$.所以开发组件时一定要把function写在(function($){})(jQuery);内已防止修改命名空间后组件需要大动
3
1
分享到:
评论

相关推荐

    jQuery自定义数字滚动插件.zip

    jQuery自定义数字滚动插件是一种基于JavaScript库jQuery的特效实现,用于展示动态的数字滚动效果。这个插件通常被用于统计数字、计数器或实时更新的数据展示,比如页面访问量、股票价格、销售数量等。它能为网站增添...

    jquery自定义表单控件.rar

    7. **自定义插件**:jQuery允许开发者创建自己的插件,封装复杂的功能,便于复用和维护。一个自定义表单控件可能就是一个这样的插件。 8. **响应式设计**:在当前的Web开发中,确保控件在不同设备和屏幕尺寸下表现...

    jquery命名空间模拟

    为了解决这个问题,开发者们引入了“命名空间”这一概念,以模仿像Java或C#等强类型语言中的命名空间机制。本篇文章将深入探讨如何在JavaScript中模拟jQuery的命名空间,以实现更有序、更安全的代码组织。 首先,...

    jQuery插件开发学习

    这篇“jQuery插件开发学习”的主题旨在帮助开发者深入理解如何利用jQuery来开发自定义插件,提高代码复用性和项目效率。下面我们将详细探讨jQuery插件开发的相关知识点。 首先,了解jQuery的核心概念是至关重要的。...

    通用 JQuery 插件 开发

    总结,通用JQuery插件开发涉及到命名空间设定、参数处理、DOM操作、事件处理、动画效果等多个方面。理解并掌握这些基础知识,能够帮助我们创建出高效、可维护的jQuery插件,提升Web应用的用户体验。

    jQuery自定义数字滚动插件

    这需要了解如何在jQuery中创建插件,包括命名空间的使用、链式调用的实现和插件的初始化过程。 5. **兼容性和性能优化**:考虑到浏览器的差异性和性能,插件应当具有良好的兼容性,并进行必要的性能优化,例如减少...

    jQuery插件开发全解析

    为了避免命名冲突,可以使用自定义的命名空间来封装函数: ```javascript jQuery.myPlugin = { foo: function() { alert('This is a test. This is only a test.'); }, bar: function(param) { alert('This ...

    jquery分页插件quickpaginate的使用

    虽然QuickPaginate主要是为jQuery设计的,但它也可以与其它jQuery插件(如Bootstrap、DataTables等)配合使用,只需确保避免命名冲突和正确管理依赖关系。 7. **维护与更新** 随着技术的发展,保持插件的更新至关...

    原创jQuery表格插件

    【原创jQuery表格插件】是一种基于JavaScript库jQuery开发的组件,旨在增强网页中的表格功能,使其具有更丰富的交互性和灵活性。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax...

    jquery 插件

    1. **命名空间**:使用IIFE(Immediately Invoked Function Expression)避免污染全局命名空间。 2. **接收参数**:通过`options`对象接收用户自定义的配置项。 3. **迭代器**:`this`关键字在插件内部指向当前匹配...

    jquery插件flash上传

    jQuery插件的编写通常遵循一定的规范,主要涉及命名空间、参数传递、元素选择以及功能实现等步骤。首先,我们需要创建一个独立的命名空间,避免与其他插件冲突。例如,我们可以这样开始: ```javascript (function...

    时间轴jquery插件

    在上述代码中,`TL`是TimelineJS的命名空间,`Timeline`是构造函数,接受两个参数:时间轴的ID和数据源URL。这样,当页面加载完成时,时间轴就会根据JSON数据自动生成。 除了TimelineJS,还有其他插件如JQuery-...

    jquery 插件开发 pdf

    - 为了防止命名冲突,jQuery插件通常使用命名空间,如`$.fn.myPlugin`。`$.fn`是jQuery对象的别名,代表了原型链`jQuery.prototype`。 - 插件内部应封装所有功能,避免污染全局作用域。 3. **参数传递** - 插件...

    jQuery封装插件原理教学 Demo

    1. **命名空间**:在jQuery对象上添加方法,通常使用`$.fn.extend`来实现,这里的`fn`是jQuery对象的别名,`extend`用于扩展函数。 2. **主函数**:这是插件的核心,包含了插件的主要功能。当我们在jQuery对象上调...

    JQuery切换插件,可多次调用

    1. **命名空间**:为避免不同插件之间的冲突,使用独特的命名空间保存和操作插件状态。 2. **元素选择与初始化**:使用jQuery的选择器找到所有需要应用插件的元素,并进行初始化配置。 3. **事件处理**:通过`.on()`...

    Jquery插件

    - **命名空间**: 为了避免与现有函数或变量冲突,通常会将插件封装在`$.fn`(即`jQuery.fn`)下,因为`$.fn`是jQuery原型链的一部分,可以访问到所有jQuery对象的方法。 ```javascript (function($) { $.fn....

    jQuery自定义添加编辑删除表单模块及拖拽排序代码

    本项目"jQuery自定义添加编辑删除表单模块及拖拽排序代码"是针对Web开发中常见需求的一个实现,旨在帮助开发者创建可自定义编辑、删除的表单模块,并且支持元素的拖拽排序功能。以下将详细讲解这个项目中的关键知识...

    JQuery文档插件资料

    - **$.extend()**: 合并两个或更多对象,常用于扩展jQuery对象或自定义插件。 - **$.each()**: 遍历数组或对象,执行回调函数。 3. **jQuery插件开发** - **命名空间**: 为了防止命名冲突,通常使用`$.fn....

Global site tag (gtag.js) - Google Analytics