为了账号安全,请及时绑定邮箱和手机立即绑定

JQuery隐藏表格列

JQuery隐藏表格列

泛舟湖上清波郎朗 2022-05-22 16:03:52
我试图在加载内容后隐藏 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>我没有收到任何错误,但第三列没有隐藏。
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

不要相信 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上的一篇旧博文中学到了这个技巧(他也感谢该页面上的其他一些博主)。


查看完整回答
反对 回复 2022-05-22
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号