如何找到与变量相同的类的第二个元素

时间:2017-01-05 23:56:59

标签: javascript jquery

得到一个表格,其中包含tr中的大多数第一个单元格,其中第一个单元格在不同的tr中具有相同的值。我打算用这些来识别。最后,我希望这些文件中的tds以不同的方式在它们之间进行交互(拉取数据并附加到不同的td,根据数据进行计算等)。但首先,我需要所有双倍的文本具有相同的颜色

HTML

<div class="tableclass">
  <table>
    <tbody>
      <tr>
       <td>id1</td>
       <td>something else</td>
       <td>1</td>
      </tr>
      <tr>
       <td>id2</td>
       <td>something else</td>
       <td>2</td>
      </tr>
      <tr>
       <td>id2</td>
       <td>something else</td>
       <td>3</td>
      </tr>
      <tr>
       <td>id3</td>
       <td>something else</td>
       <td>4</td>
      </tr>
      <tr>
       <td>id1</td>
       <td>something else</td>
       <td>5</td>
      </tr>
    <tbody>
  </table>
<div>

和jquery

$(".tableclass table tbody tr").each(function(){
           var trclass = $(this).find("td:first-child").html();
           $(this).addClass(trclass);
           $(this).parent().filter(trclass).eq(2).css('color','red');

});

显然,我做错了。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

var rows = $(".tableclass tbody tr");
var iterations = 0;
var rowNo = 0;
rows.each(function () {
    var thisRow = $(this);
    rowNo++;
    if (!thisRow.hasClass('duplicate')) {
        var trclass = thisRow.find("td:first-child").html();
        var firstcols = thisRow.siblings('tr').find('td:first-child');
        firstcols.each(function () { 
            if ($(this).html() == trclass) {
                var dupeRow = $(this).parent();
                var dupeRowNo = dupeRow.index() + 1;
                thisRow
                   .addClass('duplicate')
                   .css({'color': 'red'})
                   .attr('title', 'Duplicated in row '+dupeRowNo);
                dupeRow
                  .addClass('duplicate')
                  .css({'color': 'red'})
                  .attr('title', 'Duplicate of row '+rowNo);
                iterations++;
            }       
        })
    }
});
//alert(iterations);

它稍微复杂一点,但它识别出重复的行,而不必两次遍历每一行。我添加了iterations变量,因此您可以看到它只会在tr之前处理head(fsd$year) [1] Jan-1965 Feb-1965 Mar-1965 Apr-1965 May-1965 Jun-1965 607 Levels: Apr-1965 Apr-1966 Apr-1967 Apr-1968 Apr-1969 Apr-1970 ... Sep-2014 ,如果它之前还没有识别出它有重复项。

我在行中添加了工具提示,因此您知道哪一行与其重复。

您可以在this jsfiddle上看到它。