javascript - 原型(prototype)和 jQuery 连接失败

标签 javascript jquery firefox google-chrome prototypejs

编辑:我已将 jQuery 和原型(prototype)库排除在外,但问题仍然存在。

简化测试用例 1 - Without Concatenation
$ 函数在 a.js 中使用 window.$ 声明,在 b.js 中使用函数符号声明。 b.js 第二个加载,并覆盖 a.js $ function

简化测试用例 2 - WIth Concatenation
结合 a.js 和 b.js,首先是 a,然后是 b。函数声明


我在尝试连接原型(prototype)和 jQuery 时发现了一些奇怪的东西。似乎在连接时,$ jquery 引用不会被原型(prototype)覆盖。我构建了两个测试用例来解决这个问题,但它在 Chrome8 和 FF 3.6 中失败了。

测试用例 1 - Without Concatenation
jQuery 和 Prototype 使用不同的脚本标签分别加载。首先加载 jQuery,然后加载 Prototype。

测试用例 2 - With Concatenation
jQuery 和 Prototype 被连接到一个文件中,并加载了一个脚本标签。 jQuery 是脚本中的第一个,然后添加原型(prototype)。

它们的行为应该相同,但第二个测试会抛出错误,因为原型(prototype)中的 $ 函数不会覆盖 $ jquery 引用。

我是不是设置错了,或者当所有的 javascript 都在同一个文件中时,浏览器会以不同的方式呈现它?

最佳答案

Prototype 中的 $ 函数是用函数声明实例化的:

function $(element) {

由于 Prototype 库不在闭包中,假定范围是窗口。变量和函数声明被提升到作用域的顶部,因此声明了“function $”,然后 $ 变量被 jQuery 覆盖。

这是一个 fiddle :http://jsfiddle.net/psC7s/

关于javascript - 原型(prototype)和 jQuery 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4504026/

相关文章:

javascript - 针对 REST API 的授权会引发错误 : 401 (No credentials found the request.)

javascript - 绝对定位元素阻止拖动事件

html - FF 和 Chrome 之间的不同定位 div - HTML CSS

firefox - 我希望 Firefox 在引脚选项卡更改时播放声音?

javascript - 创建一个切换按钮,在图层打开和关闭时更改文本

javascript - 尽管在 Rails 中渲染,.js.erb 文件并未执行

jQuery 移动列表功能不起作用

javascript - 根据变量动态更改图像 URL

javascript - jQuery UI dropover 并不总是被触发

html - 显示行为不一致 : table and display: table-cell in different browsers