jQuery /原型冲突
我正在使用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,下拉列表不起作用。
-
工作下拉: http : //www.myreoforeclosures.com/_menutestfromcode.html (prototype.js已注释掉)
-
不工作下拉: http : //www.myreoforeclosures.com/_menutestfromcode2.html (原型.js工作)
我已经尝试了jQuery网站上建议的jQuery noConflict()解决方案的许多变体,但对于我的生活,我无法解决冲突。 我已经将上述链接简化为CSS和HTML的基础知识来测试下拉列表。
请注意我正在使用Web 2.0 / CSS / jQuery攀登陡峭的学习曲线,因为这是我第一次尝试使用这些工具设计网站(以前基于表格的网站)。
任何有助于使jQuery和原型协同工作的帮助将不胜感激。 我只能控制jQuery脚本,因此必须对jQuery进行任何解析。 我对prototype.js没有任何控制权。
我怀疑jQuery.noConflict()
不起作用的原因是菜单代码继续使用$
来引用jQueryfunction。 noConflict()
所做的就是从jQuery
解除绑定$
global名称。
如果你有任何代码需要$
表示“jQuery”,那么必须改为使用jQuery
。 否则,它会拿起Prototype $
,这当然是一个非常不同的东西。
编辑 – 好吧我终于让你的页面加载(我认为我的网络有问题),所以我看到你使用“$ j”非常一致。 因此我不认为菜单代码中的$
问题是一个问题,但我会在这里留下评论,因为noConflict()
仍然不是魔术。
再次编辑 – 我会按照Patrick的建议去尝试Prototype 1.4.2。
我看到你正在使用旧版本的jQuery。 你有1.3.2而不是1.4.2。
不确定它是否会有所作为,但也许尝试最新版本。
您可以直接从Google的CDN链接到它:
http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
我有完全相同的问题! 我正在使用Jq 1.6.2和prototype.js,其中包含’RangeError:无效的数组长度’。
我几乎放弃了它,直到我使用谷歌的原型CDN副本,一切都很好。 我想现在的问题是什么问题已经解决了。
如果该菜单不使用原型,您可以在新块中将$
变量重新定义为jQuery(通过自执行匿名函数)。
(function ($) { // do stuff as usual })(jQuery);
这两个url的菜单似乎对我有用。 (Firefox 3.6.4)
编辑:它们似乎适合我,因为我首选的浏览器是带有NoScript的Firefox。 我没注意到原型库来自不同的域。 = /
/ headdesk