我已经查找了很多站点和线程,但是找不到我的问题的答案。

我的JSON看起来像这样:

{
    "Pizza Margharita": {
        "price1": "4,50 €"
    },
    "Pizza Caprese ": {
        "price1": "4,00 €"
    }
}


我的jQuery函数是这样的:

  $(function() {
    $.getJSON('data/food01.json', function(data) {
      $.each(data, function(name, price) {
        $('section#food01').find('ul').append('<li><a href="#order"><h3>'+name+'</h3><span>'+price.price1+'</span></a></li>');
      });

    });
    var food01size = $('#food01 ul li a').length;
    $('#food01 li a').live('click',function(){
      alert(food01size);

    });
  });


我需要获得li或元素的.length。 foodsize01的值始终为“ 0”。那是因为数据是异步加载的。

任何人都想出什么问题了吗?

最佳答案

如您所说,问题是因为您正在异步加载数据。在添加任何元素之前触发该计数。您需要将该代码移至成功回调函数中:

  $(function() {
    $.getJSON('data/food01.json', function(data) {
      $.each(data, function(name, price) {
        $('section#food01').find('ul').append('<li><a href="#order"><h3>'+name+'</h3><span>'+price.price1+'</span></a></li>');
      });
      var food01size = $('#food01 ul li a').length;
      $('#food01 li a').live('click',function(){
        alert(food01size);
      });
    });
  });

09-13 02:40