There is a block of elements with a group of selects:

<div id="options-container"> <div class="input-box"> <select name="option[0][option_id]" class="select-options"> <option value="39367:Erwachsener" selected>Erwachsener</option> <option value="39368:Ermäßigt">Ermäßigt</option> </select> </div> <div class="input-box"> <select name="option[0][qty]" class="qty"> <option value="1" selected>1</option> </select> </div> <div class="input-box"> <select name="option[1][option_id]" class="select-options"> <option value="39369:Erwachsener">Erwachsener</option> <option value="39370:Ermäßigt1" selected>Ermäßigt</option> </select> </div> <div class="input-box"> <select name="option[1][qty]" class="qty"> <option value="1" selected>1</option> </select> </div> </div> 

With jQuery, you need to collect all the selected elements into an array of this type:

 {option:[Object { option_id="39368:Ermäßigt", qty=1}, Object { option_id="39370:Ermäßigt1", qty=1}]} 

I think there should be something like:

 var options_info = []; $('#options-container select').each(function (index, object) { var data = []; . . . options_info.push(data); }) 

Tell me how to properly collect.

    2 answers 2

     var result = $('#options-container .input-box:even').map(function(i, el) { return { option_id: $('select', el).val(), qty: $(el).next().find('select').val() }; }).get(); console.log(result); 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="options-container"> <div class="input-box"> <select name="option[0][option_id]" class="select-options"> <option value="39367:Erwachsener" selected>Erwachsener</option> <option value="39368:Ermäßigt">Ermäßigt</option> </select> </div> <div class="input-box"> <select name="option[0][qty]" class="qty"> <option value="1" selected>1</option> </select> </div> <div class="input-box"> <select name="option[1][option_id]" class="select-options"> <option value="39369:Erwachsener">Erwachsener</option> <option value="39370:Ermäßigt1" selected>Ermäßigt</option> </select> </div> <div class="input-box"> <select name="option[1][qty]" class="qty"> <option value="1" selected>1</option> </select> </div> </div> 

      As an option:

       var result = {} result.option = []; $('.select-options').each(function (index, object) { var option = object.value; var qty = $(object).parent().next().find('.qty').val(); var obj = {option_id: option, qty: qty } result.option.push(obj); }); console.log(JSON.stringify(result)); 

      The result will be

       {"option":[{"option_id":"39367:Erwachsener","qty":"1"},{"option_id":"39370:Erma?igt1","qty":"1"}]}