Jquery实战---table高度自动调整

最近一直在搞前端优化,说白了就是旧系统翻新,改变样式,美化一下,再次忽悠用户。虽说的简单,但实际操作中遇到的问题还是不少的。

例如这次遇到了一个比较棘手的问题。table中各种嵌套table,然后border还要自动补齐高度。

把系统中那一模块抽取出来在vs中测试了一把,写了一段js代码,jquery操作dom,各种选择器,实现了要达到的效果。

然而现实和理想是有差距的,嵌套在复杂代码中的一段html不会像一段纯净的html那么好操作。当然各种调试下来,最终也解决了问题。

效果图:

整个是一个大的table,左侧tdleft,右侧tdright,tdright中包含N个小table,这些小table的高度,需要自动调整到和左侧tdleft的高度一致。

实现效果之前:

实现效果之后:

附代码:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9
 10     <script src="http://cdn.static.runoob.com/libs/jquery/1.11.0/jquery.min.js"></script>
 11     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.12/css/all.css" integrity="sha384-G0fIWCsCzJIMAVNQPfjH08cyYaUtMwjJwqiRKxxE/rx96Uroj1BtIQ6MLJuheaO9" crossorigin="anonymous" />
 12     <style>
 13         table {
 14             border: 1px solid blue;
 15         }
 16
 17         .tdright,
 18         .tdleft {
 19             border: 1px solid red;
 20         }
 21
 22         * {
 23             box-sizing: border-box;
 24         }
 25     </style>
 26
 27 </head>
 28
 29 <body>
 30
 31     <table class="table_body">
 32         <tr>
 33             <td class="tdleft" style="border-right:1px solid red">tdleft高度测试<br>tdleft高度测试<br>tdleft高度测试 <br> tdleft高度测试 <br>tdleft高度测试 <br>tdleft高度测试 <br></td>
 34             <td class="tdright">
 35                 <table class="table1">
 36                     <td>table1</td>
 37                     <td>table1</td>
 38                     <td>table1</td>
 39                     <td>table1</td>
 40                     <td>table1</td>
 41                     <td>table1</td>
 42                     <td>table1</td>
 43                 </table>
 44                 <table class="table2">
 45                     <td>table2</td>
 46                     <td>table2</td>
 47                     <td>table2</td>
 48                     <td>table2</td>
 49                     <td>table2</td>
 50                     <td>table2</td>
 51                     <td>table2</td>
 52                 </table>
 53                 <table class="table4Supplement" style="height:0px">
 54                     <td>自动调整高度</td>
 55                     <td>自动调整高度</td>
 56                     <td>自动调整高度</td>
 57                     <td>自动调整高度</td>
 58                     <td>自动调整高度</td>
 59                     <td>自动调整高度</td>
 60                     <td>自动调整高度</td>
 61                 </table>
 62
 63             </td>
 64         </tr>
 65         <tr>
 66             <td class="tdleft" style="border-right:1px solid red">tdleft高度测试<br>tdleft高度测试 <br><br>tdleft高度测试 <br> <br> tdleft高度测试 <br> <br></td>
 67             <td class="tdright">
 68                 <table class="table1">
 69                     <td>table1</td>
 70                     <td>table1</td>
 71                     <td>table1</td>
 72                     <td>table1</td>
 73                     <td>table1</td>
 74                     <td>table1</td>
 75                     <td>table1</td>
 76                 </table>
 77                 <table class="table2">
 78                     <td>table2</td>
 79                     <td>table2</td>
 80                     <td>table2</td>
 81                     <td>table2</td>
 82                     <td>table2</td>
 83                     <td>table2</td>
 84                     <td>table2</td>
 85                 </table>
 86                 <table class="table4Supplement" style="height:0px">
 87                     <td>自动调整高度</td>
 88                     <td>自动调整高度</td>
 89                     <td>自动调整高度</td>
 90                     <td>自动调整高度</td>
 91                     <td>自动调整高度</td>
 92                     <td>自动调整高度</td>
 93                     <td>自动调整高度</td>
 94                 </table>
 95
 96             </td>
 97         </tr>
 98
 99     </table>
100
101     <textarea name="" id="text" cols="30" rows="10"></textarea>
102
103     <script>
104         $(function() {
105             var $rows = $(".table_body>tbody>tr"); //获取最外侧table所有行的jquery对象
106             var rowslen = $rows.length; //最外侧table的总行数
107             //alert(rowslen);
108             for (var i = 0; i < rowslen; i++) { //循环开始调整每一行的高度
109                 var $rowspcific = $($rows.get(i)); //获取每一行的jquery对象
110                 var tdleft_height = $rowspcific.find(".tdleft").height(); //左侧td的高度
111                 // alert("tdleft_height=" + tdleft_height);
112                 var $tables = $rowspcific.find(".tdright table:not(.table4Supplement)"); //右侧td中所有小table的jquery对象
113                 var len = $tables.length;
114                 // alert("right tables len=" + len);
115                 var height_total = 0;
116                 for (var j = 0; j < len; j++) { //循环每一个小table,获取总高度,与左侧高度比较
117                     var height = $($tables.get(j)).height();
118                     height_total += height;
119                 }
120                 // alert("height_total=" + height_total);
121                 $("#text").text("height_total=" + height_total);
122                 var high_differ = tdleft_height - height_total; //两边高度差
123                 if (high_differ > 0) { //高度差大于0,则补齐高度差,table4Supplement是专门为补齐高度增加的table。
124                     $rowspcific.find(".table4Supplement").height(high_differ);
125                 }
126             }
127
128
129         })
130     </script>
131 </body>
132
133 </html>

最最后,附一张我优化的系统的截图:

原文地址:https://www.cnblogs.com/lixianfu5005/p/9180750.html

时间: 2024-10-24 21:04:17

Jquery实战---table高度自动调整的相关文章

JQuery实战---窗口效果

在前面的相关博文中,小编对jquery的相关知识进行了简单的总结,关于jquery的很多小的知识点,都需要我们自己去动手和实践,一行行代码都需要我们自己亲自动手去敲,今天我们继续来学习jquery的相关小例子,今天我们这个小例子是关于窗口的弹出效果,相关源码,小编已经上传,有需要的小伙伴可以点击进行下载哦,希望可以帮助到有需要的小伙伴哦,接着,我们就开始小例子的学习,首先,我们来看一下最终的效果图,如下所示: 这个窗口效果的小例子,既不会被拦窗而且更加的灵活, 接着,我们来看一下这个小例子的整体

jQuery解决iframe高度自适应代码

网上查了好多用着都不行,自己搞定了:在包含iframe的页面中加入以下脚本,基本思想是在iframe加载内容后重新设置高度,下面代码尽在IE6中用过,没在其他浏览器中测试. 代码如下: <script type="text/javascript"> <!-- $( function() { //iframe高度随内容自动调整 $('.main').load( function() { $(this).height($(this).contents().find(&qu

jquery 排序table的列

Jquery对Table表格排序(方法一) 分类: JQUERY开发 CSS开发 2012-12-22 15:45 3452人阅读 评论(0) 收藏 举报 [css] view plaincopy 在前端对表格排序的Jquery插件有很多,功能也很强大,比如说Jquery Data Tables对表格的处理就相当强大,可对表格进行排序,搜索,分页等操作,不过没有仔细研究过其实现原理. 为了更好的理解在前端对表格进行排序的原理,也为了进一步的学习Jquery,所以决定用Jquery来实现一个对表格

jQuery遍历table中的tr td并获取td中的值

jQuery遍历table中的tr td并获取td中的值 $(function(){ $("#tableId tr").find("td").each(function(){ <span style="white-space:pre"> </span> var year = $("#year").val(); var month = $("#month").val(); var da

jquery遍历table tr td内容

$("#result").find("tr").each(function () { $(this).find("td").each(function () { if ($(this).text().indexOf("惠") > 0) { var m = $(this).text().toString(); $(this).css("width", "165px"); $(this

jQuery实战4:标签页效果

今天我们来完成<jQuery实战>系列的标签页效果.先来看一看效果图 这里有两部分的内容,上面是一个标签页的效果,下面也是一个标签页的效果.在实际应用中也经常会见到标签页的效果,它的作用主要是在页面可视区有限的情况下展示更多的内容.当用户想看其他内容的时候不需要离开页面,只需要把鼠标移动到某一个标签上就可以看到这个标签里面所对应的内容.门户网站的首页,有很多频道都是标签页的最佳案例,如体育.财经.军事等模块都是位于不同的标签上.上边的标签页一般称为滑动门技术,下面的内容是一次性加载进来,鼠标移

关于Jquery获取Table中td内的内容

$(this).children().eq(1).text()获取的是显示的值$(this).children().eq(1).html()获取的是<td></td>之间的所有内容$('.trSelected',grid).find("td").eq(7).text();获取的是选中的某行的内容 遍历表<table id="gird"..... $("#grid tr").each(function() {     

jQuery实战的常用功能

最近看了<jQuery实战第二版>有所得,写下这篇随笔,这篇随笔主要介绍jQuery中的常用功能. jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发.如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网

汇总常用的jQuery操作Table tr td方法

虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下次再使用的到时候,会让你如鱼得水,提高开发效率. 1.鼠标移动行变色  $("#table1 tr").hover(function(){ $(this).children("td").addClass("hover") },function(){