javascript - JQuery隐藏表格列

标签 javascript jquery html-table show-hide

我试图在加载 html 表的内容后隐藏它的特定列。 表 html 是动态创建的并使用 JQuery 加载。这部分按预期工作。

let cur_grid = document.getElementById('grid1')
// table html is created.
let str_tbl_html = '<table id="tbl_grid1"><tbody><tr><td>1</td><td>2</td><td>3</td><td>4</td></tr><tr><td>1</td><td>2</td><td>3</td><td>4</td></tr></tbody></table>'
$.when($(cur_grid).html(str_tbl_html)).done(function() {
  console.log('hide 3rd column')
  $('#tbl_grid1 tr td:nth-child(3)').hide()
  // also tried
  $('#tbl_grid1').find('td:nth-child(3)').hide()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='grid1'></div>

我没有收到任何错误,但第三列没有隐藏。

最佳答案

不要信任 Deferreds 来确定 DOM 元素何时绘制到屏幕上。由于您使用的是 let,我假设您可以使用现代 JavaScript,例如 onanimationstart。您可以将其与 CSS 动画结合使用来确定表格实际绘制的时间。

@keyframes any-animation {
  from {opacity: 0.99;}
  to {opacity: 1.0;}
}

table {
  animation-name: any-animation;
  animation-duration: 0.001s;
}

let cur_grid = document.getElementById('grid1')

// table html is created.
let str_tbl_html = '<table id="tbl_grid1" onanimationstart="hideThirdColumn()"><tbody><tr><td>1</td><td>2</td><td>3</td><td>4</td></tr><tr><td>1</td><td>2</td><td>3</td><td>4</td></tr></tbody></table>'

function hideThirdColumn() {
  $('#tbl_grid1 tr td:nth-child(3)').hide()
};

我在 css-tricks.com 上的一篇旧博客文章中学到了这个技巧。 (他还赞扬了该页面上的其他一些博主)。

关于javascript - JQuery隐藏表格列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708168/

相关文章:

javascript - setTimeout 似乎正在改变我的变量!为什么?

php - 使用 jQuery 禁用 append 下拉列表中的选项

javascript - 使用 jQuery 追加到表时出现 NOT_FOUND_ERR

html - 为什么表中的链接引用的类采用主 <body> 标记中链接的样式?

javascript - 如何从另一个组件显示 react 引导模式

javascript - Jquery 找到没有 id、名称或类的特定 H4

javascript - jQuery load() 失败,但没有 JS 错误

html - 内联样式的表格单元格向下移动一个像素

javascript - 在 map 内调用 this.props

jquery - jquery mobile 的最佳 IDE?