无法使用剃刀代码调用Jquery函数

时间:2014-10-08 04:34:46

标签: jquery asp.net-mvc-4 razor

我有jquery函数,我需要使用razor代码调用。 下面是我的jquery函数:

(function ($) {
        fixheader= function () {
            $('td:nth-child(' + column + '),th:nth-child( ' + column + ')').width("5px");
            $("#GridHeader").html("<table>" + $('#HtmlGrid table thead').html() + "</table>");
            $("#GridHeader table tr:first").append("<th></th>");
            $("#GridBody").html("<table>" + $('#HtmlGrid table tbody').html() + "</table>");

            $("#HtmlGrid").hide();

        };
    })(jQuery);

以下是来自剃刀代码的电话:

<script type="text/javascript">
                    fixheader();
                </script>

我无法使用此代码调用jquery。错误:未定义修复程序

2 个答案:

答案 0 :(得分:0)

您正在fixheader()初始化中定义document.ready,因此其范围保持不变。因此,您无法在document.ready块之外访问它。

编辑:将其移到外面

(function ($) {

})(jQuery);

是解决问题的一种方法。

答案 1 :(得分:0)

您可以从同一$(function(){...});块调用函数,如下所示

(function ($) {
   fixheader= function () {
     $('td:nth-child(' + column + '),th:nth-child( ' + column + ')').width("5px");
     $("#GridHeader").html("<table>" + $('#HtmlGrid table thead').html() + "</table>");
     $("#GridHeader table tr:first").append("<th></th>");
     $("#GridBody").html("<table>" + $('#HtmlGrid table tbody').html() + "</table>");

     $("#HtmlGrid").hide();

    };

    //call function here
    fixheader();
})(jQuery);

或以javascript方式定义函数,如下所示

<script>
function fixheader(){
   $('td:nth-child(' + column + '),th:nth-child( ' + column + ')').width("5px");
   $("#GridHeader").html("<table>" + $('#HtmlGrid table thead').html() + "</table>");
   $("#GridHeader table tr:first").append("<th></th>");
   $("#GridBody").html("<table>" + $('#HtmlGrid table tbody').html() + "</table>");

   $("#HtmlGrid").hide();

}
</script>