10

我正在使用 jQuery hoverIntent.js 脚本来创建一个大型下拉菜单系统,该系统的灵感来自 Son Tonaka 的大型下拉 w/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 (prototype.js工作)

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

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

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

4

6 回答 6

3

我怀疑jQuery.noConflict()不起作用的原因是菜单代码继续用于$引用 jQuery 功能。所做noConflict()的只是$jQuery.

如果您有任何期望$表示“jQuery”的代码,则必须将其更改为使用jQuery。否则,它会选择 Prototype $,这当然是完全不同的事情。

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

再次编辑——我会同意 Patrick 的建议,尝试使用 Prototype 1.4.2。

于 2010-06-27T19:50:32.097 回答
1

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

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

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

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

于 2010-06-27T19:32:33.130 回答
1

我有完全相同的问题!我正在使用 Jq 1.6.2 和一个prototype.js,带有“RangeError: Invalid array length”。

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

于 2011-07-13T13:59:38.603 回答
0

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

使用jQuery.noConflict()方法。

格兹,克里斯。

于 2010-06-27T18:47:19.067 回答
0

菜单似乎在两个 URL 上都对我有用。(火狐 3.6.4)

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

/headdesk

于 2010-06-27T19:44:15.580 回答
0

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

(function ($) {
   // do stuff as usual
})(jQuery);
于 2010-06-27T19:57:39.403 回答