Joomla中jQuery和Mootools解决冲突

Joomla中是使用Mootools的,而现在大量的JS则是基于jQuery的,结果就导致了,在Joomla的二次开发中,经常需要处理两者争抢$的问题。

对于jQuery来说我们可以使用


var jq=jQuery.noConflict();


这段代码将jQuery中的$全部转换为jq,但是这种方法使原有代码中需要修改的地方太多。
并且很多JS使用该方法后会出现一些问题,导致无法正常运行。

这个问题实质上是JS的命名空间问题,在所有基于jQuery的js中,我们在代码开头加上

(function($){


在代码结尾加上

})(jQuery);


这样之后你不需要修改任何原有的代码,能够保证该JS能够正常运行。
同时Mootools不会受到干扰,因为现在原有的代码已经被限定在这个匿名函数中了。

(function($){})(jQuery);


这个写法主要的作用是保证jQuery不与其他类库或变量有冲突。
首先是要保证jQuery这个变量名与外部没有冲突(jQuery内部$与jQuery是同一个东西,有两个名字的原因就是怕$与其他变量名有冲突,jQuery与其他变量冲突的几率非常小)并传入匿名对象,匿名对象给参数起名叫做$(其实和jQuery内部是一样的)。
最后你就可以自由的在(function($){})(jQuery);里写你的JS而不需要考虑与外界变量是否存在冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值