我有一个表格,并且我隐藏了一些行。我想要获取所有显示行中的第一个td。我有以下语句:
$("table.SimpleTable tbody tr:visible td:first-child");
这在FireFox中可以正常工作,但在IE中不行。有什么想法吗?
我有一个表格,并且我隐藏了一些行。我想要获取所有显示行中的第一个td。我有以下语句:
$("table.SimpleTable tbody tr:visible td:first-child");
这在FireFox中可以正常工作,但在IE中不行。有什么想法吗?
<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是什么样子?
编辑: 对于我来说,你现在所做的事情非常奇怪。你应该能够用以下代码替换你现有的代码:
var serials = [];
$("table.SimpleTable tbody tr:visible td:first-child").each(function() {
serials.push($.trim($(this).text()));
});
var serials = serials.join(',');
$("table.SimpleTable tbody tr:not(:hidden) td:first-child")
我正在点击事件上运行代码。你写的HTML基本上是正确的,但由于一些我不知道的原因它没有起作用。不过我已经找到了一个解决办法。(我试图获取可见行第一个单元格中所有值的逗号分隔字符串)无论如何,以下解决办法可以完成任务。
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());
}
$("table.SimpleTable").find("tr:visible").find("td:first-child").text()
?
从文档中得知:
“在jQuery 1.3.2中,:visible的计算方式已更改。如果元素及其父元素在文档中占用空间,则假定该元素可见。不考虑CSS可见性。”
也许这与此有关。尝试使用类选择器或其他方法,而不是tr:visible。