2009-12-11 113 views
2

假设我在嵌入式div中的不同级别的页面上有多个表(没有ID或名称)。我的选择器(如果可能的话)将选择所有表,而不管它位于页面上的何处,并根据第一行中第一个单元格的内容迭代或过滤表?选择器 - 在jQuery中选择页面上的所有表格

+6

http://docs.jquery.com/ – 2009-12-11 17:09:17

+4

不要只是开始使用库。首先阅读文档。 DUH! – 2009-12-11 17:10:42

回答

10

您可以简单地使用$('table')作为选择器。

然后,您可以使用现有的过滤器,例如“:contains”或“:has”或.filter()函数,如果您需要更细粒度的控制来过滤结果。例如,

$('table:has(td > span)') 

$('table').filter(function(index){ 
    return $(this).html() == "<tr><td>something</td></tr>"; 
}); 
2

要选择所有表简单得不能再简单:

$("table") 

添加过滤器

$("table:has(td:first:contains('mytext'))") 
2

这将选择所有表格:

$("table") 

这将选择每个表的第一行的第一个TD手机:

$("table tr:first td:first") 
0

如果你是想看看第一个单元格的每个表的第一行中,你可以使用:

$("table tr:first td:first").each(function() { var html = this.innerHTML; /* Iterative logic here */ });

2

您可以只使用jQuery('table')让每一个表。无论表格是处于不同级别还是嵌入在div中,或者其他内容都不会改变。

进行额外的过滤:

jQuery('table').filter(function() { ... }); 

在功能通过将表元素映射到this,你就需要返回true以保持您的收藏中,或假放弃它。

+0

我打字几乎是一样的东西 – 2009-12-11 17:11:52

+0

你可以使用$(this).find(“td:first”)来获取第一个tablecell,然后执行过滤逻辑(返回true或false) – 2009-12-11 17:12:48

3

尝试...

$("table").each(function(){ 
    var curTable = $(this); 
    var cell = $(this).find("tr:first td:first"); 

    if ($(cell).text() == "some text"){ 
    } 
}); 

或者,也可以全部由$检查第一小区的HTML的,如果子句中(细胞)的.html()

0

你应该尝试像$('table tr:first td:first:containts("whatever")')到抓住具有特定内容的第一行的第一个单元格。

1
$('table').each(function(){ 
    $(this).find('tr :first')... 
});