jQuery与mootools共存冲突怎么解决???

shopex使用mootools框架,现在要加入jQuery,怎么解决它们两个共存冲突... shopex使用mootools框架,现在要加入 jQuery,怎么解决它们两个共存冲突 展开
 我来答
匿名用户
2013-11-27
展开全部
你是说命名冲突么?jQuery里有个API叫noConflict();就是为了解决命名冲突问题,使用如下。
var jq = jQuery.noConflict();
此处只能用jQuery而不能用$,因为$在此时已经冲突了,而在jQuery中jQuery对象和$是等价的,一般用其他库的情况下,jQuery命名不会冲突。
使用的时候,由于规定了jq=jQuery.noConflict(),所以可以直接将jq当作jQuery的$符号用。
例如:jq("#example").hide();

除此之外,还有几种其他的用法:
用法二:
jQuery.noConflict();
jQuery("#example").hide();
类似于上面的方法,只是此处并没有将jQuery简写,这样就是打的字会比上面一个多一点。(就是说这里不用var将某个对象设置成jQuery实例,所以每次都要用jQuery代替$简写符)

方法三
jQuery.noConflict();
(function($){
$(function(){
//此处用带有$的代码写;例如$("#example").hide();
})
})(jQuery)
这个原理是在noConflict的下面自行构造了一个参数为$的函数(由于参数不是全局的,所以和$不冲突),而传入的参数为jQuery(也就是jQuery的通用对象),然后此函数里包含了一个function $()空参数函数来运行语句,但是此函数的名称就是刚才传入的$,由于这函数是属于外部函数内部,所以不会冲突,而此时就相当于新构造出的函数$为jQuery的实例。

方法四
jQuery.noConflict()(function(){
//此处写代码,但是不能用$而应该用jQuery()
})
这个原理就是在jQuery.noConflict()返回的新实例中直接传入参数,noConflict返回的新实例相当于jQuery实例,在参数中用空参函数运行语句。

方法五
var dom={};
dom.query=jQuery.noConflict(true);
这个方法是完全将jQuery移到另外一个命名空间里。构造一个空的DOM数组,然后将jQuery.noConflict()返回的jQuery实例复制到dom.query并清空之前存在的所有元素,不过感觉此方法还不如用jQuery("#example"),因为它调用的语句是dom.query("#example")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式