2013-08-13 1 views
0

У меня есть некоторые 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 и установки функций.

+0

Текущий сценарий можно решить как http://jsfiddle.net/arunpjohny/RjdSt/1/ –

+0

, но если вы сможете воссоздать реальный случай в скрипке, мы можем помочь вам больше –

ответ

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

0
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>' 
    );          
}); 
Смежные вопросы