如何修复Prototype与Highchart的冲突?

时间:2014-04-29 16:08:09

标签: javascript jquery highcharts prototype conflict

我有一个AJAX动作并试图同时使用Highchart,这就是我需要包含Prototype的原因。

这是我的代码,但没有显示Highchart图表:

<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7/prototype.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>

<div id="contain" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

以下是信息:http://jsfiddle.net/dhdSL/4/

当然,没有Prototype:http://jsfiddle.net/dhdSL/5/

就100%工作

我尝试了jQuery.noConflict();,但未显示高亮图http://jsfiddle.net/dhdSL/6/

并尝试$.noConflict();并且没有显示高亮图http://jsfiddle.net/dhdSL/7/

我在Stack Overflow搜索答案,博客,Facebook,书籍,谷歌并花了六个月时间仍然没有找到答案。

我尝试在所有版本中更改Prototype但仍无法正常工作,并且未在控制台中显示错误。

根据一位朋友告诉我最后包含noConflict但未在谷歌浏览器浏览器中显示并显示错误:http://jsfiddle.net/dhdSL/8/ aaaaaaaaa

当打开错误时,我收到了另一个错误:

enter image description here

1 个答案:

答案 0 :(得分:4)

将jQuery包装到一个匿名函数中,以保护变量免受Prototype的干扰。 http://jsfiddle.net/amyamy86/s6ms3/

(function($) {

    $.noConflict();
    $(function () {
        $('#contain').highcharts({
         ....
        });
     });

}(jQuery));