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

gfr*_*one 4 javascript jquery function append

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

这有效:

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

但这不是:

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

I H*_*azy 5

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

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

第二个版本将立即运行.

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

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

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

$(document).ready(function() {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

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

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

   <script type="text/javascript" src="http://example.com/my/script.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)