2013-03-04 49 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