jQuery和原型冲突(jQuery & Prototype Conflict)

2019-06-21 05:19发布

我使用一个HTML页面,我也有使用原型手风琴菜单jQuery的自动完成插件。

他们都完全独立工作,但是当我试图在一个页面来实现这两个组件,我感到我一直无法理解的错误。

未捕获的异常:[异常... “组件返回失败代码:0x80004005的(NS_ERROR_FAILURE)[nsIDOMViewCSS.getComputedStyle]” nsresult: “0x80004005的(NS_ERROR_FAILURE)” 位置:“JS帧::文件:/// C:/文件和设置/Administrator/Desktop/website/js/jquery-1.2.6.pack.js ::匿名::第11" 行的数据:无]

我发现了文件与jQuery冲突的是它使用的折叠式菜单“effects.js”。 我试着用较新版本替换该文件,但更新似乎打破了手风琴的行为。

我的猜测是,在手风琴使用的“effects.js”文件被修改,以获得手风琴演示输出。 我使用重载方法jQuery的需要,以避免与其他库的冲突也尝试和没有工作。

我得到来自手风琴演示stickmanlabs.com 。

而jQuery的自动完成从获得jQuery的网站 。

有任何其他人遇到此问题?

Answer 1:

有两个可能的解决方案:有使用旧版本是Scriptaculous和jQuery的冲突(Scriptaculous的企图不正确地扩展本机阵列原型) - 第一次尝试升级Scriptaculous的副本。

如果不工作,你将需要使用noConflict()如上文提到)。 然而,有一个问题。 既然你包括一个插件,你需要做的包括以特定的顺序,例如:

<script src="jquery.js"></script>
<script src="jquery.autocomplete.js"></script>
<script>
  jQuery.noConflict();
  jQuery(document).ready(function($){
    $("#example").autocomplete(options);
  });
</script>
<script src="prototype.js"></script>
<script src="effects.js"></script>
<script src="accordion.js"></script>

希望这有助于澄清情况。



Answer 2:

jQuery的可以让你从命名jQuery函数$到别的避免与其他库命名空间冲突的东西。

你可以做这样的事情

var J = jQuery.noConflict();

详情点击此处: michaelshadle.com - jQuery的无冲突模式:另一个原因,这是最好的



Answer 3:

我实在不明白在这种情况下,同时使用这两个库的原因。

您可以使用原型的(当然,Scriptaculous的实际上) 于Ajax.Autocompleter和沟jQuery的,或者您也可以使用jQuery的手风琴 ,摆脱原型的。

使用这两个库一次是不是真的是一个好主意,因为:

  1. 他们可能会导致冲突。
  2. 通过包括他们两个你强迫你的用户下载他们。 这是不是带宽友好的方式。


文章来源: jQuery & Prototype Conflict