开发者社区> 问答> 正文

用slideToggle()展开和隐藏导致布局变形咋办

screenshot
上面是初始状态,下面是展开和缩放的状态。内容的宽度变长了。但是用toggle()的话,不加参数没问题,加了毫秒参数也会出同样问题。

<script src="../scripts/jquery-1.3.1.js"></script>
<script>
    $(function(){
        $("tr.parent").click(function() {
            $(this).toggleClass('selected');
            $(this).siblings('.child_' + this.id).slideToggle();
        });
    })
</script>
<style>
    table { border:0; border-collapse:collapse;}
    th {border-bottom:1px solid black; font:bold 12px/17px Arial; text-align: left; padding: 4px; width: 100px;}
    td {font:normal 12px/17px Arial; padding: 2px; width: 100px;}
    .parent {background: #FFF38F; cursor: pointer;}
    .odd { background: #FFFFEE;}
    .selected { background: #FF6500; color:#fff;}
</style>
<body>

<table>
    <thead>
        <tr><th>姓名</th><th>性别</th><th>暂住地</th></tr>
    </thead>
    <tbody>
        <tr class="parent" id="row_01"><td colspan="3">前台设计组</td></tr>
        <tr class="child_row_01"><td>张山</td><td>男</td><td>浙江宁波</td></tr>
        <tr class="child_row_01"><td>李四</td><td>女</td><td>浙江杭州</td></tr>

        <tr class="parent" id="row_02"><td colspan="3">前台开发组</td></tr>
        <tr class="child_row_02"><td>王五</td><td>男</td><td>湖南长沙</td></tr>
        <tr class="child_row_02"><td>找六</td><td>男</td><td>浙江温州</td></tr>

        <tr class="parent" id="row_03"><td colspan="3">后台开发组</td></tr>
        <tr class="child_row_03"><td>Rain</td><td>男</td><td>浙江杭州</td></tr>
        <tr class="child_row_03"><td>MAXMAN</td><td>女</td><td>浙江杭州</td></tr>
    </tbody>
</table>
</body>

展开
收起
小旋风柴进 2016-05-30 09:42:05 2525 0
1 条回答
写回答
取消 提交回答
  • 原因清楚了,JQ里面toggle()实现的方式是display:none和table-row切换,slideToggle()是display:none和block切换,table里面的tr用block的时候会导致布局错误。解决方法就是改display的值。

    2019-07-17 19:19:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载