2015-11-01 1 views
-3

У меня есть JSON назад с JQueryJavascript: JQuery: Объявить динамические переменные с числовыми префиксами от Json

Я хотел бы сделать это:

var $item1 = $('<div class="gallery-item item1">'); 
var $item2 = $('<div class="gallery-item item2">'); 
.... 
var $items = $item1.add($item2).add($item3)....; 

Я стараюсь сделать так, но я не могу не производить динамическую переменную

if(response){ 
     var items = []; 
     $.each(response, function(key, val) { 
     // console.log('id :',key); 
     // console.log('val :',val); 
      var $item+key= $(val); 
     }); 
     // var $items = $item1.add($item2).add($item3)....; 
     } 
+0

Что именно вы просите? @pablofrR – illusionist

+0

Редактировать ваш вопрос и сделать его более полезным для будущих посетителей; с лучшим заголовком и объяснением вашего намерения; так что мы могли бы продвигаться, если считалось – illusionist

+0

Я хочу создать несколько VAR из JSON, чтобы добавить их как этот var $ items = $ item1.add ($ item2) .add ($ item3) ....; http://codepen.io/anon/pen/LpraKY – pablofr

ответ

1

Что нужно сделать $ .add(), просто добавить выбранные элементы в выборку. То, что вы планируете, может отличаться, но то, что я понял из вашего сообщения, - это вы хотите выбрать все новые div, созданные в соответствии с доступным JSON.

Для этой цели вы можете сделать:

var response = { 
 
    "$item1": '<div class="gallery-item item1">', 
 
    "$item2": '<div class="gallery-item item2">', 
 
    "$item3": '<div class="gallery-item item3">' 
 
}; 
 
if (response) { 
 
    var $items; 
 
    $.each(response, function(key, val) { 
 
    eval(key + "=$('" + val + "')"); 
 
    var e = eval(key); 
 
    $items = ($items== null)?e:$items.add(e); 
 
    
 
    /* for visual output */ 
 
    e.html(key); 
 
    $("body").append(e); 
 
    /* for visual output */ 
 
    }); 
 
}
.gallery-item { 
 
    width: 100px; 
 
    height: 100px; 
 
    float: left; 
 
    margin-right: 5px; 
 
    padding: 20px; 
 
} 
 
.item1 { 
 
    background: red; 
 
} 
 
.item2 { 
 
    background: green; 
 
} 
 
.item3 { 
 
    background: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

держать Также в виду, вы должны избегать использования Eval() как можно больше. Задайте себе вопрос, действительно ли вам нужно делать такие вещи? Это могло быть достигнуто простым выбором:

var $items = $(".gallery-item"); 
+0

Не знаю количество предметов. Как это сделать: var $ items = $ item1.add ($ item2) .add ($ item3); Это не работает: var $ items; $ .each (response, function (key, val) { eval (key + "= $ ('" + val + "')"); var $ items = key.add (ключ); }); – pablofr

+0

@pablofr Кажется, что вы получаете доступ к $ item1 из-за пределов локальной переменной. Если вы хотите, чтобы он был снаружи, объявите переменную глобальной. –

+0

Согласен, но как? Я не знаю номер этого элемента в ответе json перед обработкой разбора. – pablofr

Смежные вопросы