jQuery /原型冲突

时间:2010-06-27 18:40:48

标签: jquery prototypejs conflict hoverintent

我正在使用jQuery hoverIntent.js脚本来创建一个巨大的下拉菜单系统,该系统的灵感来自Son Tonaka的大型下拉/ CSS& jQuery sohtanaka.com/web-design/mega-drop-downs-w-css-jquery。我的页面包含一个由第三方供应商插入的prototype.js脚本(这是一个加载属性搜索和潜在客户管理内容的房地产网站)。它在标签之前加载到最后。我的菜单脚本和jQuery调用加载在标记的顶部。下面我已经包含了2个链接。第一个链接我已经注释掉对prototype.js的调用,菜单工作正常。第二个链接调用了prototype.js,下拉列表不起作用。

  1. 工作下拉:http://www.myreoforeclosures.com/_menutestfromcode.html(prototype.js注释掉)

  2. 不工作下拉:http://www.myreoforeclosures.com/_menutestfromcode2.html(原型.js工作)

  3. 我已尝试过jQuery网站上建议的jQuery noConflict()解决方案的许多变体,但对于我的生活,我无法解决冲突。我已经将上述链接简化为CSS和HTML的基础知识来测试下拉列表。

    请注意我正在使用Web 2.0 / CSS / jQuery攀登陡峭的学习曲线,因为这是我第一次尝试使用这些工具设计网站(以前基于桌面的网站)。

    任何有助于让jQuery和原型协同工作的帮助将不胜感激。我只能控制jQuery脚本,因此必须对jQuery进行任何解析。我对prototype.js没有任何控制权。

6 个答案:

答案 0 :(得分:3)

我怀疑jQuery.noConflict()不起作用的原因是菜单代码继续使用$来引用jQuery功能。 noConflict()所做的只是解除$ jQuery全局名称的绑定。

如果您有任何希望$代表“jQuery”的代码,则必须将其更改为使用jQuery。否则,它会选择原型$,这当然是一个非常不同的东西。

编辑 - 好吧我终于加载了你的页面(我认为我的网络有问题),所以我看到你正在使用“$ j”非常一致。因此,我不认为菜单代码中的$问题是一个问题,但我会在这里留下评论,因为noConflict()不是魔术仍然是正确的。

再次编辑 - 我会按照Patrick的建议去尝试原型1.4.2。

答案 1 :(得分:1)

我看到你正在使用旧版本的jQuery。你有1.3.2而不是1.4.2。

不确定它是否会有所作为,但也许会尝试最新版本。

您可以直接从Google的CDN链接到它:

http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

答案 2 :(得分:1)

我有完全相同的问题!我正在使用Jq 1.6.2和prototype.js,其中包含'RangeError:无效的数组长度'。

我几乎放弃了它,直到我使用谷歌的原型CDN副本,一切都很好。我想现在的问题是什么问题已经解决了。

答案 3 :(得分:0)

答案 4 :(得分:0)

这两个网址的菜单似乎对我有用。 (Firefox 3.6.4)

编辑:它们似乎对我有用,因为我首选的浏览器是带有NoScript的Firefox。我没注意到原型库来自不同的域。 = /

/ headdesk

答案 5 :(得分:0)

如果该菜单不使用原型,您可以在新块中将$变量重新定义为jQuery(通过自执行匿名函数)。

(function ($) {
   // do stuff as usual
})(jQuery);