Как вернуть объект, используя jQuery, а не только значение

0

Я ищу способ замены .val(); в jQuery с чем-то вроде .array или .object. Поэтому вместо того, чтобы получать только значение раскрывающегося списка, я могу вернуть полный массив для выбранного значения.

У меня есть раскрывающийся список, который позволяет пользователю выбирать несколько "игровых типов", я выводил это на экран, и когда пользователь нажимает кнопку, содержимое этих "игровых типов" должно быть отправлено как запрос JSON.

Код, который я сейчас использую, ниже, однако он возвращает только имя "gametype", поэтому, когда я запускаю код, я получаю "RPG" в консоли. Мне нужен полный объект, поэтому RPG, издатели, игры и т.д.

Ive посмотрел документацию API в jQuery и не может найти способ сделать это, возможно ли это с помощью jQuery?

Js Код:

$("#nextbutton").click(function () {
         var datatosend = {
             gametypes: [],
             market: [] //This is populated using the same method however i don't need the whole object, just the name so this works
         };
             $("#comboGameType").find(":selected").each(function() {
             var str = $(this).val();
             datatosend.gametypes.push(str);
             console.log(str);
         });

});

Пример JSON:

{
"games": [{
    "gameType": "RPG",
    "publishers": [{
        "publisher": "Square",
        "titles": [{
            "title": "Final Fantasy",
            "gameReleases": [ 2006, 2008, 2010, 2012, 2013, 2014 ]
        }]
    }]
}]
}

Html довольно стандартный, он заполняется через js

<select id="comboGameType" class="selectpicker" multiple> </select>

JS для обработки изменений для выпадающего списка и отображения выбора:

$('#comboGameType').change(function () {
     var values = $('#comboGameType').val();
     var parsedData = JSON.parse($myData);
     for (var i = 0; i < values.length; i += 1) {
         $('#output').append("<div>" + values[i] + "</div>")
     }
 });

Вот скрипят, чтобы показать в качестве примера - когда вы просматриваете консоль, видно, что значение drop down возвращается, но я пытаюсь вернуть FULL-объект (так что все в RPG, например) http://jsfiddle.net/2Ma7U/

  • 1
    Итак, с каким HTML вы работаете?
  • 0
    Я думаю, что вы должны построить массив JSON самостоятельно
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Вы можете использовать данные jQuery для хранения всего объекта и получения его позже.

$(parsedData.genres).each(function (i) {
     $("#pubCombo").append($("<option/>", {
         val: this.genre,
         html: this.genre,
         data: this
     }));
 });


$("#next").click(function () {
         var datatosend = {
             gametypes: [],
             market: []
         };
             $("#pubCombo").find(":selected").each(function() {
             var obj = $(this).data();
             datatosend.gametypes.push(obj);
             console.log(obj);
         });

});

Обновлена скрипка http://jsfiddle.net/2Ma7U/1/

  • 0
    Это здорово, большое спасибо Nemoy, везде искал что-то для замены .val (), просто не видел данных. Ура!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню