从特定列获取所有值,不重复

时间:2017-10-03 14:01:13

标签: jquery each

我需要使用Jquery从特定列(标题“Comp”,在不同位置)获取所有值,而不重复。

我的桌子:

<table>
  <thead class="tableh">
    <tr> <th>Key</th><th>Comp</th> </tr>
  </thead>
  <tbody>

 <tr><td>CA5533</td><td>1413</td></tr>

  </tbody>
</table>

<table>
  <thead class="tableh">
    <tr> <th>Key</th><th>Sec</th><th>Comp</th> </tr>
  </thead>
  <tbody>

 <tr><td>CA5533</td><td>1413</td><td>1413</td></tr>

  </tbody>
</table>

我的功能(不工作):

var arr = [];
$(".tableh th:contains('Comp')").each(function() {
    if ($.inArray($(".tableh th:contains('Comp') td").text(), arr) == -1)
        arr.push($(".tableh th:contains('Comp') td").text());
});

//Create your select
var select = $("<select />");
for (var i = 0; i < arr.length; i++) {
    $("<option>" + arr[i] + "</option>").appendTo(select);
}

select.appendTo("#whitebginternal");

这里有谁可以帮助我?

谢谢!

1 个答案:

答案 0 :(得分:2)

要实现此目的,您可以先从Comp中的值中找到th行的索引。然后,您可以在遍历该数组以将td元素放入option之前,在该列的select元素中构建所有文本值的数组。

另请注意,正如您所说,页面中有多个表格,您需要遍历每个表格,如下所示:

&#13;
&#13;
$('table:has(thead.tableh)').each(function() {
  var index = $(this).find('.tableh th:contains("Comp")').index();
  var options = $(this).find('tbody tr').find('td:eq(' + index + ')').map(function() {
    return `<option>${$(this).text()}</option>`;
  }).get().join('');

  $("#whitebginternal").append(`<select>${options}</select>`);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead class="tableh">
    <tr>
      <th>Key</th>
      <th>Comp</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>CA5533</td>
      <td>1413</td>
    </tr>
    <tr>
      <td>CA5534</td>
      <td>1414</td>
    </tr>
    <tr>
      <td>CA5535</td>
      <td>1415</td>
    </tr>
    <tr>
      <td>CA5536</td>
      <td>1416</td>
    </tr>
  </tbody>
</table>

<div id="whitebginternal"></div>
&#13;
&#13;
&#13;