如何使用 jQuery 仅获取 HTML 表格中的可见元素?

Posted

技术标签:

【中文标题】如何使用 jQuery 仅获取 HTML 表格中的可见元素?【英文标题】:How to obtain only visible elements inside an HTML table using jQuery? 【发布时间】:2012-12-23 15:50:36 【问题描述】:

我有以下问题:我有一个表格,其中每一行都有一些可见的单元格,而有些则不可见。像这样的:

<table>
  <thead>
  </thead>
  <tbody>
    <tr>
      <td id='cell_a1'>A</td>
      <td id='cell_b1' style='display:none'>B</td>
    </tr>
    <tr>
      <td id='cell_a2'>C</td>
      <td id='cell_b2' style='display:none'>D</td>
    </tr>
  </tbody>
</table>`

我只需要使用 .html() 方法检索表格的可见内容,就像上面的表格一样:

<table>
  <thead>
  </thead>
  <tbody>
    <tr>
      <td id='cell_a1'>A</td>
    </tr>
    <tr>
      <td id='cell_a2'>C</td>
    </tr>
  </tbody>
</table>`

我尝试使用可见选择器,但我可能以错误的方式使用它,因为我无法让它工作。无论如何,感谢任何帮助。

【问题讨论】:

【参考方案1】:

要获取所有可见元素,您可以使用 the :visible selector 和以下语法:

$('td:visible')

但这不会让您获得所有表格的 html,就好像它不包含隐藏元素一样。

为此,您可以暂时复制表格并删除不可见的单元格:

var t = $('table').clone();
t.appendTo(document.body);
t.find('td').not(':visible').remove();
var html = t.html();
t.remove();

Demonstration(打开控制台)

【讨论】:

【参考方案2】:

我知道这已经很晚了,但是因为我喜欢学习...... ;-)

jQuery :visible Selector 有一个很好的例子。

HTML:

<table>
...
</table>

<div id="output"></div>

JS:

var t = $('table').clone();
$('td', t).filter(function()  return $(this).css('display') == 'none'; ).remove();
var html = t.html();
$('#output').text(html); // This shows the HTML code

见JSFiddle

【讨论】:

如果您将最后一行替换为console.log(t.html());,您会看到 html 也包含隐藏单元格。

以上是关于如何使用 jQuery 仅获取 HTML 表格中的可见元素?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery怎么获取某表格中的一列td的值?

如何使用 JQuery 获取 HTML 表中的所有值

如何使用 angularjs 或 jQuery 更改 HTML 表格中的文本颜色?

单击 HTML 表格并获取行号(使用 Javascript,而不是 jQuery)

使用jquery动态添加表格的行之后,如何获取表格高度?

如何使用jquery获取html表单的每个客户端控件的名称name和value值?以json格式返回