Cómo recorrer una tabla de filas con JQuery y acceder a algunos de los valores de celda?

<table class="checkout itemsOverview">
    <tr class="item">
        <td>GR-10 Senderos</td>
        <td><span class="value">15.00</span> €</td>
        <td><input type="text" value="1" maxlength="2" class="quantity" /></td>
    </tr>
    <tr class="item">
        <td>GR-10 Senderos<br/>GR-66 Camino de la Hermandad<br/>GR 88 Senderos del   Jarama<br/>Camino del Cid</td>
        <td><span class="value">45.00</span> €</td>
        <td><input type="text" class="quantity"   value="1" maxlength="2"/></td>
    </tr>
</table>

Yo estaba tratando con el siguiente código para obtener el valor y la cantidad de cada elemento.

$("tr.item").each(function(i, tr) {
    var value = $(tr + " span.value").html();
    var quantity = $(tr + " input.quantity").val();
});

No está funcionando. Alguien me puede ayudar?

  • específicamente, ¿qué no está trabajando para usted?

3 Kommentare

  1. 89
    $("tr.item").each(function() {
      $this = $(this);
      var value = $this.find("span.value").html();
      var quantity = $this.find("input.quantity").val();
    });
    • Con el fin de no repetir todas las tablas en la página, mejor para reemplazar $(«tr.el elemento»).cada(…) con $(‘#myTableId > tbody > tr.elemento’).cada(…)
    • ¿Qué $this = $(this) hacer?
    • tiendas de la actual contextuales valor de «esto» en una variable llamada $esta. Si usted fuera a otro nido iterativo de la llamada después de la cantidad de la asignación, llamando a «$(this)» ya no sería el mismo resultado. Creo que Brian simplemente utilizando el estándar de mejores prácticas para evitar esta confusión, pero que podría haber fácilmente el nombre «curRow», etc.
  2. 16

    hacer esto:

    $("tr.item").each(function(i, tr) {
        var value = $("span.value", tr).text();
        var quantity = $("input.quantity", tr).val();
    });
  3. 0

    probar este

    var value = iterate('tr.item span.value');
    var quantity = iterate('tr.item span.quantity');
    
    function iterate(selector)
    {
      var result = '';
      if ($(selector))
      {
        $(selector).each(function ()
        {
          if (result == '')
          {
            result = $(this).html();
          }
          else
          {
            result = result + "," + $(this).html();
          }
        });
      }
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea