我尝试使用jquery在html表的特定列中搜索数据。我已经搜索了不同的答案,但我找不到适合我的答案。
表格只是一个简单的表格:
<table id="tabla">
<tr>
<th>TimeStamp</th>
<th>IP</th>
<th>Nombres</th>
<th>Descripción</th>
</tr>
</table>
我找到了一段代码,允许您在整个表格中搜索数据:
var $rows = $('#tabla_servicios tr');
var $col_ip = $('#ip');
$('#buscar1').keyup(function() {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
});
但我想按专栏搜索。
编辑:
这是我的第二种方法:
$('#buscar').click(function() {
var table = document.getElementById("tabla_servicios");
var sel_opt = document.getElementById("options");
var busqueda = $("#busqueda").prop("value");
var column_sel = 0;
if (sel_opt.value == "timestamp"){
//alert("opcion timestamp");
column_sel = 0;
}else if (sel_opt.value == "ip"){
//alert("opcion ip");
column_sel = 1;
}else if (sel_opt.value == "nombres"){
//alert("opcion nombres");
column_sel = 2;
}else if (sel_opt.value == "descripcion"){
//alert("opcion descripcion");
column_sel = 3;
}
var column_length = $('#tabla_servicios tr th').length;
//alert("column_length = "+column_length);
var row_length = $('#tabla_servicios tr').length;
for(row=1; row<row_length; row++){
var data=$('#tbody_tabla tr:eq('+row+') td:eq('+column_sel+')').text();
//alert("busqueda: "+busqueda+" data: "+data);
if(busqueda == data){
$('#tbody_tabla tr:eq('+row+')').remove();
data.parent().css("font-size: 200%");
}
}
});
但是它没有正常工作,css代码无法正常工作,只有当我在if中添加警报时才能删除行。
答案 0 :(得分:0)
您可以更改td
代码的子伪选择器,使用nth-child
可以选择所需的列:
var $rows = $('#tabla_servicios tr td:nth-child(2)'); //column 2
var $rows = $('#tabla_servicios tr td:nth-child(10)'); //column 10
祝你好运
答案 1 :(得分:0)
您可以尝试这样:
HTML:
<table id="tabla">
<tbody id="tbody_tabla">
<tr>
----
</tr>
</tbody>
</table>
Jquery:
for(col=0;col<=column_length; col++){
for(row=0; row<=row_length; row++){
var data=$('#tbody_tabla tr:eq('+row+') td:eq('+col+')').text();
}
}
您还可以动态查找列数和行数
例如:column_length = $("#tbody_tabla tr:first td").length;