jquery - 与 jQuery + Prototype + Opera/IE 冲突

标签 jquery prototypejs conflict

我正在使用带有原型(prototype)的 IPBoard CMS,并且我使用最新的 jQuery。

我实现了一个 jQuery 画廊图片查看器: - 它在 Chrome 和 Firefox 上运行良好。 - 我在使用 Opera 和 IE 8 时遇到问题。

我在这里创建了一个最小的示例:http://www.warriorlabs.net/index.php?app=ccs&module=pages&section=pages&folder=&id=22

您只需点击图片即可。

在 IE 8 或 Opera 中:

当我删除原型(prototype)时,一切正常。

当我将 jQuery 原型(prototype)与“noConflicted”画廊查看器一起保存时,jQuery 访问器返回的宽度和高度似乎存在错误。因此,加载框未居中,图片本身似乎映射到整个窗口。

有人知道为什么会发生这种情况吗?

如果有一点帮助,我们将不胜感激。

最佳答案

我实际上并没有同时使用原型(prototype)和 jQuery,但根据我的理解,您应该将 jQuery.noConflict() 调用放在原型(prototype)脚本之前。

尝试将文档头更改为如下所示:

<head>
    <script src="http://cdn.jquerytools.org/1.2.4/full/jquery.tools.min.js"></script>
    <script type="text/javascript">
        jQuery.noConflict();
    </script>
    <script type="text/javascript" src="http://prototypejs.org/assets/2009/8/31/prototype.js"></script>
    <script type="text/javascript" src="http://www.warriorlabs.net/jScript/facebox/facebox.js"></script>
</head>

编辑:
还要从 facebox.js 的第一行删除 jQuery.noConflict(),因为它删除了原型(prototype)定义的 $ 函数。

旁注:
编写 jQuery 插件的常用方法是这样的:

(function($){
  //Inside this block we know that $ == jQuery
  //The global $ (i.e. window.$) might be something else
  //By using this anonymous function we make sure we don't polute the global namespace
  var v = "function scope";//this is a variable in the scope of the function
  window.globalV = "global scope";//this is a global variable
  $.fn.myPlugin = function(){
    //my plugin code, usually something like:
    return this.each(function(){
      //do something with each element
      $(this).show();
    });
    //returning this.each allows for chaining
  }
})(jQuery);
<小时/>

在 Chrome 中,我在演示页面上收到此错误:
未捕获类型错误:对象 [object DOMWindow] 的属性“$”不是函数 [prototype.js:4598]

关于jquery - 与 jQuery + Prototype + Opera/IE 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005166/

相关文章:

Git - 如何在所选文件上强制 merge 冲突和手动 merge

php - 使用 javascript 从表单中删除 onsubmit 值

javascript - JQuery:向 anchor 元素添加 onClick 函数

Javascript 调用隐藏字符串文本并将其存储为 LI 标记内的变量

javascript - JS 原型(prototype),不支持捕获空格键代码?

mercurial - 使用本地GUI工具进行远程 merge 冲突解决

ajax - 意外的标记

位置为 "fixed"的菜单上的 jquery 动画填充

javascript - 原型(prototype): wrapping raw HTML to create extended element

javascript - 如何在一个php文件中执行两个javascript?