我有一张桌子,我隐藏了一些行。我想在显示的所有行中获得第一个td。我有以下声明
$("table.SimpleTable tbody tr:visible td:first-child");
这适用于FireFox但在IE中没有任何想法吗?
答案 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()