jQuery错误??如何在所有可见的行中获取第一个“td”

时间:2009-05-07 21:45:51

标签: javascript jquery

我有一张桌子,我隐藏了一些行。我想在显示的所有行中获得第一个td。我有以下声明

$("table.SimpleTable tbody tr:visible td:first-child");

这适用于FireFox但在IE中没有任何想法吗?

4 个答案:

答案 0 :(得分:6)

应该工作。使用HTML看起来像这样:

<table class='SimpleTable'> 
  <tr style='display: none;'> 
    <td>test1</td> 
  </tr> 
  <tr> 
    <td>test2</td> 
  </tr> 
  <tr> 
    <td>test3</td> 
  </tr> 
  <tr style='display: none;'> 
    <td>test4</td> 
  </tr> 
  <tr> 
    <td>test5</td> 
  </tr> 
  <tr> 
    <td>test6</td> 
  </tr>   
</table>

这样做:

$("table.SimpleTable tbody tr:visible td:first-child").css('color','red');

对我来说,在Firefox,IE7中将颜色设置为红色。你的HTML是什么样的?

Here's what I tested the above on

编辑:我现在正在做你正在做的事情,这很奇怪。你应该能够用这个替换你现有的东西:

var serials = [];
$("table.SimpleTable tbody tr:visible td:first-child").each(function() {
    serials.push($.trim($(this).text()));
});
var serials = serials.join(',');

如果正在从选择器填充TD,则它们应该只是可见的。如果你将隐藏的TD加入到连续出版物中(我必须强调,它应该真的不会发生,并且是某个错误或某个错误的标志),请尝试使用此选择器:

$("table.SimpleTable tbody tr:not(:hidden) td:first-child")

答案 1 :(得分:6)

我在点击事件上运行代码。你写的html非常有用,但由于某些我不知道的原因它不起作用。我找到了一个工作。 (我试图在可见行的第一个td中获取逗号分隔的所有值的字符串)无论如何,以下解决方法可以完成工作。

    var notfirst = false;
    var serials = "";
    var tds = $("table.SimpleTable tbody tr:visible td:first-child");
    for (var i = 0; i < tds.length; i++) {
        var td = $(tds[i]);
        if (td.is(":hidden"))
            continue;
        if (notfirst)
            serials += ",";
        else
            notfirst = true;

        serials += $.trim(td.text());
    }

由于某种原因:隐藏标签正常工作但不是:IE7中可见

答案 2 :(得分:3)

来自文档:

  

“如何:可见的计算是   在jQuery 1.3.2中更改。元件   如果它和它的假设是可见的   父母在文档中占用空间。   不考虑CSS可见性   帐户“。

也许这与它有关。尝试使用类选择器或其他东西而不是tr:visible

答案 3 :(得分:3)

为什么不把它分开一点?

$("table.SimpleTable").find("tr:visible").find("td:first-child").text()