无法选择多于拳头匹配jQuery

时间:2016-12-14 19:45:08

标签: jquery

我有一个jQuery代码,用于检查表中每个data-tipo的属性<th>,并根据其内容设置该列中每个<td>的特定值。请参阅example for better understanding

JS:

  var tabla = $('table');

  tabla.find('tr th').each(function(i) {

    var tipo = $(this).data('tipo');

    if (tipo === 'string') {
      var celda = tabla.find('tr td').eq(i);
      celda.attr('data-valor', celda.text());
    }
    if (tipo === 'number') {
      var celda = tabla.find('tr td').eq(i);
      var numSaneado = celda.text().replace('.', '').replace(',', '.').replace(/[^0-9.]/g, "");
      celda.attr('data-valor', numSaneado);
    }
  });

一切正常,将<td>标题的列中的每个data-tipo='string'放置在正确的data-value上,与任何data-tipo='number'相同,但仅表示如此在第一行做。

IMAGE

如何在所有行上使用它?

1 个答案:

答案 0 :(得分:1)

使用选择器"tr td"时,您要对行及其单元格的选择进行组合。因此,当您执行tabla.find('tr td').eq(i);时,它只会选择&#34; i&#34;行和单元格的组合。

相反,我相信您希望在每一行中找到i个单元格。为此,选择所有行,然后在每个行中找到正确的单元格。这是实现这一目标的一种方式:

table.find('tr').each(function (tr) {
  var celda = $(tr).find('td').eq(i);
  // the rest of your code
});

遍历行,查找行中的每个i单元格。