使用jQuery在COLUMN中搜索表行以查找特定文本

时间:2013-07-26 07:12:06

标签: jquery html

我发现this question on StackOverflow有一个非常好的答案,但作为初学者,我想要更详细的解释,因为我的情况有点不同:我有一个类似下面的表:

 ________________________________________________
 | id |     name     | age |      location      |
 |----+--------------+-----+--------------------|
 |  1 | Victor       | 14  | Bucharest, Romania |
 |  2 | John         | 17  | New York, USA      |
 |  3 | Steve        | 12  | New York, USA      |
 |  7 | Michael      | 37  | Washington DC, USA |
 |  9 | Michaela     | 25  | Washington DC, USA |
 |----+--------------+-----+--------------------|

此人的ID在我的数据库(MySQL数据库)中设置为AUTO_INCREMENT,因此如果我删除一条记录,它将像我这里的最后一条记录(从7到9)。我想搜索HTML表格中personId = 3的行。

因此,基于the question in my link,如何将搜索优化为仅在ID列中?

编辑@yeyene:

这是基于您的代码的功能。实际上,我不需要更改行的背景颜色,我需要行的索引以便稍后使用.eq(index)对其进行一些操作:

function findTableRow(personId){
    $('#people tr').each(function(){
        if($(this).find('td').eq(0).text() == personId){
            return (row's index?)
        }
    }); 
}

2 个答案:

答案 0 :(得分:11)

点击此处,DEMO http://jsfiddle.net/yeyene/wAxNu/

$(document).ready(function(){
    $('table tr').each(function(){
        if($(this).find('td').eq(0).text() == '3'){
            $(this).css('background','red');
        }
    });
});

答案 1 :(得分:4)

您可以使用数据库查询实现此目的:

SELECT (id, name, age, location) FROM table WHERE id = 3;

如果您想在页面上使用过滤器,您可以获得已发布问题的第一个答案:

var tableRow = $("td").filter(function() {
    return $(this).text() === "3";
}).closest("tr");

说明:

  1. 制作var tableRow
  2. 使用$("td")
  3. 查找所有单元格
  4. 根据函数过滤找到的单元格,这是测试单元格的内容是否等于'3'。 $(this)表示单元格,.text()输出文本内容。
  5. 添加了
  6. closest("tr"),以选择tr所在的td
  7. 如果您想对该行执行某些操作,可以执行以下操作:tablerow.hide()
  8. 要隐藏所有行,但不隐藏所选行,请使用以下代码:

    $('tr').not(tableRow).hide();
    

    工作演示: http://jsfiddle.net/hzW2a/