0

我对 JSON 有疑问。它看起来像这样 - 只是摘录:

{
    "Pizza Margharita": {
        "id": "0",        
        "price1": "4,50"        
    },
    "Pizza Caprese ": {
        "id": "1",
        "price1": "4,00"
    },
    "Pizza Salami": {
        "id": "2",
        "price1": "4,00"
    }
}

我的功能如下所示:

$(function() {
    $.getJSON('data/food01.json', function(data) {

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



        $('#food01 li a').live('click', data, function(name, price) {
            var foo = name;
            $('#foodname h3').append(foo);
        });
    });
});

通过$.each()我从 JSON 中获取数据并将其附加到<li>-elements。这工作正常。现在我想在另一个函数中获取值,该函数仍然包含在 $getJSON 函数中。这是可能的还是我做错了什么?如果有人可以帮助我会很棒 - 非常感谢!

4

4 回答 4

0

数据可在您的函数中访问,因此您无需将其传入!

$(function() {
        $.getJSON('data/food01.json', function(data) {

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



            $('#food01 li a').live('click', function(name, price) {
                //you can just access data here...
    var foo = name;
                $('#foodname h3').append(foo);
            });
        });

});
于 2012-11-06T17:23:24.083 回答
0

有用!

$(function() {
     $.getJSON('data/food01.json', function(data) {

         $.each(data, function(name, price) {
              $('section#food01').find('ul').append('<li><a id="order'+price.id+'" href="#order"><h3>'+name+'</h3><span>'+price.price1+'</span></a></li>');
              var foodname = name;
              var id = price.id;
              $('#food01 li a').live('click', function(name, price){
                  var indexNo = $(this);
                  var indexNo2 = ($('#food01 a').index(indexNo));

                  if(indexNo2 == id) {
                         $('#foodname h3').append(foodname);
                  }<!-- if -->
              });<!-- /live -->
          });<!-- /each -->

     });<!-- /getJSON -->
   });<!-- /function -->
于 2012-11-06T18:48:05.217 回答
0

传递给liveon可以通过事件的数据属性访问的数据参数。这是一个如何迭代的示例data,例如:

    $('#food01 li a').on('click', null, data, function(e) {
        $.each(e.data, function(name, price){
            var foo = name;
            $('#foodname h3').append(foo);
        });
    });

我不确定你需要做什么data,但这很容易适应。

于 2012-11-06T17:35:44.623 回答
0

这是我尝试的答案:

$(function() {

    $.getJSON('data/food01.json', function(data) {

        $.each(data, function(name, price) {

            $('section#food01').find('ul').append('<li><a id="+order' + price.id + '" href="#order"><h3>' + name + '</h3><span>' + price.price1 + '</span></a></li>');

            if( /* some condition like price > 100 or name == 'Margharita'*/ ){
                $('#food01 li a').on('click', function() {
                    $('#foodname h3').append(name);
                }); // click 

            }  // if

        }); // each

    }); // getJSON

}); // ready
于 2012-11-06T17:51:23.200 回答