【问题标题】:functions inside $.each execute only for first JSON object$.each 中的函数仅对第一个 JSON 对象执行
【发布时间】:2013-08-15 01:09:52
【问题描述】:

我有一些 JSON,例如

Levels = {
    "1" : {
        "level"   : 1,
        "name"    : "blah blah",
        "TTtitle" : "blah blah blah blah"
    },
    "2" : {
        "level"   : 2,
        "name"    : "blah blah",
        "TTtitle" : "blah blah blah blah"
    }
};

当我在每个循环中声明一个函数时,它只在第一个循环中执行,例如

var addIcons;    
$.each(Levels, function(key, value){
       v = value,
       addIcons = function(){                                               
         $(
           '<li class="icon' + key + '">'+                                              
           '<a class="Tip" href="#' + key + '" title="' + v.TTtitle +'"></a>'+
           '</li>'
          ).appendTo('ul');                                     
       }
    });
addIcons();

在循环中声明函数不是一个好主意吗?

如何让函数为每个“关卡”触发?

这只是我正在测试的一些代码的示例,因为我在单独的函数中使用了 5 个单独的每个循环,并且正在寻找一种只遍历 JSON 一次并设置函数的方法。

【问题讨论】:

标签: jquery json iteration each


【解决方案1】:

应该是

$.each(Levels, function(key, value){
    var v = value;
    $('<li class="icon' + key + '">' +                                              
      '<a class="Tip" href="#' + key + '" title="' + v.TTtitle + '">t</a>' +
      '</li>').appendTo('ul');                                     
});

演示:Fiddle

但如果你想创建一个函数列表并稍后执行它们,那么试试

var addIcons = [];    
$.each(Levels, function(key, value){
    var v = value;

    addIcons.push(function(){                                               
        $(
            '<li class="icon' + key + '">'+                                              
            '<a class="Tip" href="#' + key + '" title="' + v.TTtitle +'"></a>'+
            '</li>'
        ).appendTo('ul');                                     
    })
});

$.each(addIcons, function(idx, fn){
    fn();
})

演示:Fiddle

【讨论】:

    【解决方案2】:
    you can write as follows
    $.each(Levels, function(key, value){
       v = value,
         $('ul').append(
           '<li class="icon' + key + '">'+                                              
           '<a class="Tip" href="#' + key + '" title="' + v.TTtitle +'"></a>'+
           '</li>'
          );                                     
    });
    

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2018-05-12
      • 2020-06-01
      相关资源
      最近更新 更多