1

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

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

如果已经加载,我需要知道页面是否触发了 .noconflict 功能。为什么 ?这很简单。假设一个随机页面同时具有 Prototype 和 jQuery(发生,是的)。站长为 jQuery 触发 .noconflict 模式,避免与它发生冲突。之后,我触发我的脚本,并检查 jq 是否已加载(是)。然后,我必须知道天气才能使用 $() 或 jQuery() 方法,因为如果我继续使用 $() 我可能会访问 Prototype 处理程序,而我不希望那样。

4

3 回答 3

3

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

所以你可以随时使用jQuery()

于 2012-09-03T06:56:32.020 回答
2

正如其他人所说,您应该始终默认使用完整的 jQuery 对象而不是别名。如果是输入数量问题,请使用 $ 然后在文本编辑器中查找替换,然后再推送。

...但是,如果您绝对,肯定地必须以荒谬的方式这样做,那很简单:

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

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

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

不要说我们没有警告你。

于 2012-09-03T06:58:06.190 回答
2

您可以使用:

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

});

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

于 2012-09-03T07:00:38.267 回答