为什么我在Jquery中遇到未捕获的ReferenceError?

时间:2014-02-22 13:46:37

标签: jquery

我创建了一个js函数,它将按如下方式切换页面正文的内容:

 var BodySwitcher = {

        initBodySwitcher : function(){
            var self = this;
            $(document).on("click", ".bodySwitcher", function() { 
                var action = $(this).attr("id");
                self.ajaxCall(action, null, $.proxy(self.showBody, this), $.proxy(self.initCall, this));
            });
        },

        ajaxCall : function(action, data, callback, callback1){
            $.ajax({
                url: action,
                type: "POST",
                data: data,
                error: function(){
                    alert('Please Contact your Administrator');
                },
                success: function(data){         
                    callback(data);
                },
                complete: function (data){
                    callback1(data);
                }
            });
        },

        showBody : function(data){
            var $container = $("#body_container");
            $container.empty();
            $container.html(data);
        },

        initCall: function(data){
            var $container = $("#body_container");
            var $table = $container.find(".table");
            if ($table.length > 0){ 
                initDataTable($table);
            }
            var $form = $container.find("form");
            if ($form.length > 0){ 
                initForm($form);
            }

        },

        initDataTable : function($table){
            if ($table.length > 0){ 
                $("#"+$table.attr("id")).dataTable( {
                    "sPaginationType": "full_numbers"
                } );
            }
        },

        initForm: function($form){
            alert("form");
            var self = this;
            $form.form.validate();
            $formSubmit = $form.find(".button");
            $(document).on("click", $formSubmit, function(){
                var formData = $form.serialize();
                var action = $form.attr("id");
                alert(action);
                self.ajaxCall(action, formData, $.proxy(self.showBody, this), $.proxy(self.initCall, this));
            });
        }

    };

但我遇到了这个错误:

Uncaught ReferenceError: initForm is not defined 

为什么呢?为什么它能找到initDataTable但不能找到initForm?

1 个答案:

答案 0 :(得分:1)

您不能将对象属性引用为普通变量。

    initCall: function(data){
        var $container = $("#body_container");
        var $table = $container.find(".table");
        if ($table.length > 0){ 
            BodySwitcher.initDataTable($table);
        }
        var $form = $container.find("form");
        if ($form.length > 0){ 
            BodySwitcher.initForm($form);
        }

    },

initDataTable导致错误的原因可能是因为$table.length0,所以它会跳过该代码。