2014-02-22 25 views
0

蔭創建一個js函數,將如下切換我的網頁正文的內容:爲什麼我在Jquery中遇到Uncaught ReferenceError?

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

不能將對象屬性引用爲正常變量。

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,所以跳過該代碼。

+0

在這種情況下使用'this'而不是'BodySwitcher'會更好嗎? –

+0

我不確定,我的Javascript OO foo有點微薄。看起來他只有一個'BodySwitcher'對象,他沒有定義類。 – Barmar

相關問題