2013-03-04 43 views
0
<script type="text/javascript"> 
    $JTj(document).ready(function() { 
     var map = {"rows": 4, "cols" : 4}; 
     alert(map.rows); 
     formUpdate(map);  
    }); 

    function formUpdate(map) { 
     if (map != undefined) { 
      $JTj('#mapContainer').selectionmap(map); 
     } 
    } 
    formUpdate(map); 
</script> 

//簡單的庫jQuery函數對象

<script type="text/javascript"> 
(function ($JTj) { 
    $JTj.fn.selectionmap = function (options) { 
     alert(options.rows); 
    }; 
})(jQuery); 
</script> 

我得到錯誤,

ReferenceError: $JTj is not defined $JTj(document).ready(function() {

請讓我知道什麼是應該做的改變。

+0

你爲什麼試圖將jQuery對象重命名爲$ JTj? – Stefan 2013-03-04 09:43:45

+0

我沒有得到,請多解釋一下。 – user1127804 2013-03-04 09:46:20

回答

2

在您當前的代碼中,$JTj只能在您的自我調用匿名函數的範圍內訪問。

你將不得不包裝你的第一個代碼段在另一個(或者相同)匿名函數:

<script type="text/javascript"> 
    (function($JTj) { 
     $JTj(document).ready(function() { 
      var map = {"rows": 4, "cols" : 4}; 
      alert(map.rows); 
      formUpdate(map);  
     }); 

     function formUpdate(map) { 
      if (map != undefined) { 
       $JTj('#mapContainer').selectionmap(map); 
      } 
     } 
     formUpdate(map); 
    })(jQuery); 
</script> 

順帶一提,要小心:你發出呼叫formUpdate()ready處理程序。執行該呼叫時,DOM可能尚未準備好。

+0

謝謝你,我會試試 – user1127804 2013-03-04 09:49:20

+0

你不應該在jQuery Mobile中使用'(document).ready(function()',而應該使用'pageshow','pagecreate'事件,請查看文檔http://api.jquerymobile .com/pageshow /請糾正我,如果我錯了 – 2013-03-04 09:51:28

+0

@Mayu,這將是[pageinit](http://jquerymobile.com/demos/1.2.0/docs/api/events.html)事件。 '在一般情況下是正確的,但我不確定提問者的標記實際上是否實現了jQuery Mobile的頁面,如果是的話,他肯定應該遵循你的建議。 – 2013-03-04 09:56:55