Muszę zachować wartości każdego wejścia w obiekcie JS. To jest mój kod HTML:

<div class="produs_varianta">
      <input type="text" class="product_name" value="Product One">
      <input type="text" class="product_code" value="Code One">
</div>
 <div class="produs_varianta">
      <input type="text" class="product_name" value="Product Two">
      <input type="text" class="product_code" value="Code Two">
</div>
 <div class="produs_varianta">
      <input type="text" class="product_name" value="Product Three">
      <input type="text" class="product_code" value="Code Three">
</div> 

mój kod .js:

var variante = $('.produs_varianta');
var produs_varianta = [];
variante.each(function(index){
     produs_varianta.push(
     {
         'produs' : 'the value of product_name',
         'cod'    : 'the value of product_code
     }
   );
});

** Próbowałem używać $ (tego) .children (". Product_name '). Val (), ale mam niezdefiniowany! **

2
Soptareanu Alex 27 czerwiec 2017, 15:10

3 odpowiedzi

Najlepsza odpowiedź

Użyj .find() jak w $(this).find(".class").val()

var variante = $('.produs_varianta');
var produs_varianta = [];
variante.each( function() {
  produs_varianta.push({
    'produs': $(this).find(".product_name").val(),
    'cod': $(this).find(".product_code").val()
  });
});

console.log(produs_varianta)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="produs_varianta">
  <input type="text" class="product_name" value="Product One">
  <input type="text" class="product_code" value="Code One">
</div>
<div class="produs_varianta">
  <input type="text" class="product_name" value="Product Two">
  <input type="text" class="product_code" value="Code Two">
</div>
<div class="produs_varianta">
  <input type="text" class="product_name" value="Product Three">
  <input type="text" class="product_code" value="Code Three">
</div>
3
Hassan Imam 27 czerwiec 2017, 12:23
$(document).ready(function () {
    var variante = $('.produs_varianta');
    var produs_varianta = [];
    variante.each(function (index) {
        produs_varianta.push(
         {
             'produs': $(this).find('.product_name').val(),
             'cod': $(this).find('.product_code').val()
         }
       );
    });

    // NOW READ THE PRODUCTS AND ITS CODES.
    $.each(produs_varianta, function (key) {
        alert(produs_varianta[key].produs + ': ' + produs_varianta[key].cod);
    });
});
1
Arun Banik 27 czerwiec 2017, 12:30

Musisz dodać funkcję jQuery dla tego. Twój HTML jest

<div class="produs_varianta">
      <input type="text" class="product_name" value="Product One">
      <input type="text" class="product_code" value="Code One">
</div>
 <div class="produs_varianta">
      <input type="text" class="product_name" value="Product Two">
      <input type="text" class="product_code" value="Code Two">
</div>
 <div class="produs_varianta">
      <input type="text" class="product_name" value="Product Three">
      <input type="text" class="product_code" value="Code Three">
</div>

A jQuery będzie to

var result = [];
$('.produs_varianta').each(function( ) {
  var elem = $(this);
  var obj = {
     'product_name': elem.find('.product_name').val(),
     'product_code' : elem.find('.product_code').val()
  };
  result.push(obj);     
});

console.log(result);

Oto załączony link z JSFiddle

1
Ankit Agarwal 27 czerwiec 2017, 12:19