4

我在 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)。我想搜索personId = 3我的 HTML 表中包含 的行。

那么,根据我的链接中的问题,我怎样才能将该搜索细化为仅在 ID 列中?

为@yeyene 编辑:

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

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

2 回答 2

13

在这里查看,演示http://jsfiddle.net/yeyene/wAxNu/

$(document).ready(function(){
    $('table tr').each(function(){
        if($(this).find('td').eq(0).text() == '3'){
            $(this).css('background','red');
        }
    });
});
于 2013-07-26T07:35:39.387 回答
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. 根据函数过滤找到的单元格,这是测试单元格的内容是否等于'3'。$(this)引用单元格,.text()输出文本内容。
  4. closest("tr")添加以选择tr放置td的位置。
  5. 如果你想对该行做一些事情,你可以这样做tablerow.hide()

要隐藏所有行,但不隐藏所选行,请使用以下代码:

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

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

于 2013-07-26T07:20:59.103 回答