我需要使用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");
这里有谁可以帮助我?
谢谢!
答案 0 :(得分:2)
要实现此目的,您可以先从Comp
中的值中找到th
行的索引。然后,您可以在遍历该数组以将td
元素放入option
之前,在该列的select
元素中构建所有文本值的数组。
另请注意,正如您所说,页面中有多个表格,您需要遍历每个表格,如下所示:
$('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;