未捕获的TypeError:$(...)。ddBarChart不是函数

时间:2016-08-03 22:20:19

标签: javascript jquery asp.net-mvc

致力于MVC 5项目。这个特定页面是一个部分页面(Razor),如果这有任何区别。

我正在尝试使用ddchart jQuery库。 (http://kiersimmons.com/ddchart/index.html)我一直收到这个错误......

Uncaught TypeError: $(...).ddBarChart is not a function

发生错误的代码行在这里:

$("#chart_div_static").ddBarChart({
        chartDataLink: "~/Scripts/plugins/ddchart/Chart_Data.js?1=10",
        action: 'init',
        xOddClass: "ui-state-active",
        xEvenClass: "ui-state-default",
        yOddClass: "ui-state-active",
        yEvenClass: "ui-state-default",
        xWrapperClass: "ui-widget-content",
        chartWrapperClass: "ui-widget-content",
        chartBarClass: "ui-state-focus ui-corner-top",
        chartBarHoverClass: "ui-state-highlight",
        callBeforeLoad: function () { $('#loading-Notification_static').fadeIn(0); },
        callAfterLoad: function () { $('#loading-Notification_static').stop().fadeOut(0); },
        tooltipSettings: { extraClass: "ui-widget ui-widget-content ui-corner-all" }
    });

我知道函数存在,并且在调用ddBarChart之前放置了引用(包含函数的js文件)。仅供参考....

<script src="~/Scripts/plugins/ddchart/jquery.ddchart.js"></script>

作为测试:在我的jquery.ddchart.js文件中,我甚至创建了一个test()函数,它只是弹出一个警报。我在ddBarChart函数之前的行上写了这个函数。当我调用测试功能时它工作正常。所以我知道对外部js文件(jquery.ddchart.js)的引用是正确的。

****更新****

仅供参考:外部文件中的ddBarChart功能以...开始

jQuery.fn.ddBarChart = function(options) {
        function setupDrillDown(strID, intDelay, strH, strW, strL) {
            $(strID+ "> .ddchart-chart-final").css("z-index","2");
               :
               :
        }

        function aniDrillDown(strID,intDelay) {
            $(strID+ " > .ddchart-chart-final > .ddchart-chart-wrapper-sub").animate( {width: "100%",height: "100%",left: "0%"}, intDelay-500, function(){aniCleanUp(strID)});  
        }
               :
               :

****更新说明**** (这是一个MVC 5部分页面(剃刀),如果这有任何区别。当我在另一个项目中创建一个普通的非部分页面时似乎工作。)

任何想法可能是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

之前我遇到过这样的问题。问题是jQuery库被包含两次。

这发生在以下顺序中:

  • HTML文件加载了jQuery文件,定义了jQuery对象。
  • HTML文件加载了插件文件,将函数附加到jQuery.fn
  • HTML文件加载了jQuery文件,重新定义 jQuery对象。

在此之后,对jQuery的任何引用都将在新定义的jQuery对象上,该对象没有附加插件函数。

这与它只是在部分视图中包含时失败是一致的。您必须确保仅在包含单个 jQuery源之后才包含该插件。