问题出现在 IE6 中(可能所有浏览器都早于 document.getElementsByClassName)。使用 jQuery 1.6 和 Prototype 1.5
<script src="../js/jquery-1.6.js" language="javascript" type="text/javascript"> </script>
<script language="javascript" type="text/javascript">
// Prototype will claim the '$' namespace so give jQuery '$j' instead.
$j = jQuery.noConflict();
</script>
<script src="../js/prototype.js" language="javascript" type="text/javascript"> </script>
这个问题在这里讨论:http ://randomous.com/forum/topic.php?id=916 (见第二篇文章)和这里:http ://ejohn.org/blog/getelementsbyclassname-pre-prototype-16
本质上,Prototype 在浏览器中创建 document.getElementsByClassName 的时间早于该功能(现在大多数浏览器都原生支持它)。
然而 jQuery 也会检查 document.getElementsByClassName 是否存在,当它找到它时,它假定它正在获取本机实现;但实际上它得到的 Prototypes 实现并不像 jQuery 所期望的那样。
我已经尝试了很多技巧来解决这个问题,但都没有奏效。[试图告诉 jQuery document.getElementsByClassName 未定义,试图阻止原型声明 document.getElementsByClassName 等]
该应用程序很旧(因此是旧原型),不幸的是主要在 IE6 和 IE7 上运行(是的,FML)。我正在尝试使用最新的 jQuery,因为那是我很舒服的地方,我需要向应用程序添加许多疯狂的 UI 控件 - 组合框自动完成 Dragdroppy 疯狂......基本上我确实需要 jQuery。
这里的最终结果是每当我使用 jQuery 的类选择器时都会出错 - $('.someClass')
这里有什么想法吗?我以为我对 javascript 很满意,但这让我很生气。