jQuery - 检查是否已触发.noconflict

时间:2012-09-03 06:52:22

标签: javascript jquery

我正在将jQuery脚本动态加载到随机页面中。 有时他们支持jQuery,有时他们有其他库,有时他们根本没有任何库..

我需要支持所有情况,因此,首先我检查jQuery是否已加载。 不是这样,我使用.noconflict动态地将jQuery加载到页面中(以避免在有其他库的情况下发生冲突,daahhh)然后继续我的脚本。

已加载的情况,我需要知道该页面是否已触发.noconflict功能。 为什么?这很简单。 让我们说一个随机页面同时包含Prototype和jQuery(碰巧,是的)。 网站管理员触发jQuery的.noconflict模式,以避免与它发生冲突。 之后,我触发我的脚本,并检查是否已加载jq(是)。 然后,我必须知道使用$()或jQuery()方法的天气,因为如果我继续使用$(),我可能会访问Prototype处理程序, 我不希望这样。

3 个答案:

答案 0 :(得分:3)

.noConflict仅删除$对象,而不删除jQuery对象。 (除非您添加true作为第一个参数。

因此,您始终可以使用jQuery()

答案 1 :(得分:1)

正如其他人所说,你应该总是默认使用完整的jQuery对象而不是别名。如果这是一个打字数量问题,请在推送到实时之前在文本编辑器中使用$然后使用find-replace。

...但是如果你绝对,那么肯定是这种荒谬的方式,这很简单:

​if​ ($ == jQuery) { alert("YAY"); }​​​​​​

这是我使用jQuery 1.8和单独加载的MooTools 1.4.5在JSFiddle上编写的一个例子:http://jsfiddle.net/fL9rk/2/

运行一次,然后卸载外部MooTools并重试。

不要说我们没有警告你。

答案 2 :(得分:1)

你可以使用:

jQuery(function( $ ){
//Insert your javascript code here

});

并且所有jQuery代码都将在这些大括号中,并且永远不会与其他原型冲突。