jQuery追加不在getJSON回调之外工作

时间:2012-12-01 16:25:27

标签: javascript jquery function append

我正在整合所有JSON调用。我从$.getJSON这个电话中取出了所有内容,并确认我的页面仍然有效,但是当我将附加和列表视图删除时,内容永远不会出现。

这有效:

    $.getJSON("data/rides.json",
        function(data){
          $('#myRideList').append( rideList.join(' ') );
          $('#myRideList').listview('refresh');
      });

但这不是:

  //  $.getJSON("data/rides.json",
  //    function(data){
          $('#myRideList').append( rideList.join(' ') );
          $('#myRideList').listview('refresh');
 //     });

1 个答案:

答案 0 :(得分:5)

您可能在DOM准备好之前运行代码。

getJSON版本将异步运行,为DOM提供加载的机会。

第二个版本将立即运行。

您可以将代码放在.ready()处理程序中,以确保DOM已准备就绪。

$(function() {
  //  $.getJSON("data/rides.json",
  //    function(data){
          $('#myRideList').append( rideList.join(' ') );
          $('#myRideList').listview('refresh');
 //     });
});

我上面使用的语法是这样的快捷方式:

$(document).ready(function() {
    // ...
});

最简单的解决方案往往是最好的。正如@T.J.Crowder所指出的那样,将您的脚本放在页面底部(或至少在所需元素之后的页面上的某个位置)的尝试和真实技术很简单,并且不需要 - 引擎盖技巧。

<body>
   <!-- your HTML markup -->

   <script type="text/javascript" src="http://example.com/my/script.js"></script>
</body>