jQuery - цикл $ .each через переменный объект - PullRequest
0 голосов
/ 15 декабря 2009

Я работаю с набором данных JSON, который имеет несколько объектов высокого уровня. Если я буквально объявляю имя объекта, я могу без проблем циклически проходить через JSON, но когда я использую переменную вместо нее, я получаю ошибки. Похоже, что он пытается применить имя переменной в качестве буквального имени объекта. Вот быстрый пример

function(data){
    var select = $('#lists select');
    var activeList = $(select+':selected').val();

    $.each(data.activeList, function(i,item){
      // Do stuff    
    });
}

Как мне заставить его использовать значение activeList в этом случае? Чтобы было понятно, переменная activeList правильно возвращает значение выбранной опции. Если значение activeList равно «Christmas_List», цикл по data.activeList должен циклически проходить по объекту Christmas_List в данных JSON. Это не работает, похоже, что data.activeList ищет объект "activeList". Если я попробую буквальное значение вместо activeList (Christmas_List), цикл будет работать правильно.

Есть идеи? Спасибо

Ответы [ 3 ]

10 голосов
/ 16 декабря 2009

Вы имеете в виду, что у вас есть что-то подобное?

$(function() {
    var test = { Foo : [ 1, 2, 3], Bar : [4, 5, 6] }; // Your JSON object
    var prop = "Foo"; //Your select list value
    $.each(test[prop], function() { alert(this); });
});

В этом случае вы хотите получить доступ к объекту по ключу ....

test[prop]

, а не напрямую

test.prop; 
2 голосов
/ 15 декабря 2009

Я не совсем уверен, что вы пытаетесь сделать здесь, однако ваш пример кода выглядит неловко, и, возможно, что-то вроде этого - то, что вы ищете в качестве ответа:

activeList = []
$(select+":selected").each( function(item) {
    activeList.append( $(item).val() )
});

Это создаст список: выбранных значений. Если нет, уточните вопрос.

1 голос
/ 15 декабря 2009

$ (). Val () возвращает первое найденное значение, если вы хотите, чтобы оно было в виде массива, вам придется самим проходить по выбранным входам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...