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

run*_*ier 7 javascript jquery

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

$("table.SimpleTable tbody tr:visible td:first-child");
Run Code Online (Sandbox Code Playgroud)

这适用于FireFox而不是IE中的任何想法?

Pao*_*ino 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>
Run Code Online (Sandbox Code Playgroud)

这样做:

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

使用Firefox,IE7中的颜色为红色.你的HTML是什么样的?

这是我在上面测试的内容

编辑:对我来说,你需要做你现在正在做的事情是非常奇怪的.你应该能够用这个替换你现在拥有的东西:

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

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

$("table.SimpleTable tbody tr:not(:hidden) td:first-child")
Run Code Online (Sandbox Code Playgroud)


run*_*ier 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());
    }
Run Code Online (Sandbox Code Playgroud)

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