使用Jquery显示隐藏的数据表会中断CSS

使用Jquery显示隐藏的数据表会中断CSS,jquery,html,css,Jquery,Html,Css,编辑:已解决。当页面最初加载时,数据表是使用css文件形成的。然而,当它调用javscript时,它正在重建datatable并忽略我引用的任何CSS文件。因此,它会自动缩小表格以匹配文本的大小。通过在实际创建数据表时设置bAutoWidth=false,可以避免这种情况 感谢所有帮助过你的人 我有一个数据表,如下所示 <div class="datatable" style="display:none;"> <div class="row">

编辑:已解决。当页面最初加载时,数据表是使用css文件形成的。然而,当它调用javscript时,它正在重建datatable并忽略我引用的任何CSS文件。因此,它会自动缩小表格以匹配文本的大小。通过在实际创建数据表时设置bAutoWidth=false,可以避免这种情况

感谢所有帮助过你的人

我有一个数据表,如下所示

   <div class="datatable" style="display:none;">
            <div class="row">
                <table class="display" id="testtable">
                    <thead>
                        <tr>
                            <th>First column</th>
                            <th>Second</th>
                            <th>Third</th>
                        </tr>
                    </thead>
                    <tbody id="selectable">                           
                                <tr class="gradeU">
                                    <td align="left">First column info</td>
                                    <td align="left">second</td>
                                    <td>Third</td>
                                </tr>
                    </tbody>
                </table>

            </div>
        </div>
这是可行的,但是它破坏了CSS。数据表变得非常拥挤,只有其应有宽度的四分之一左右。我已经尝试在调用的函数中将宽度设置得更大,但是没有运气。我知道这与下面的代码有关

     style="display:none;"
一旦我把它拿出来,表就会显示得很好,但是我需要它隐藏起来,直到调用函数为止

我尝试了通常的$element.style.visibility,但似乎没有什么不同,桌子顽固地拒绝按照正确的尺寸。非常感谢您的帮助

编辑:下面是表格的CSS和TD

   table.display {
margin: 10px;
padding: 5px;
clear: both;
width: 98%;
overflow: auto;
/*    text-align: center;*/
height: auto;

    }

    table.display td {
        padding: 5px 5px;
     }

    table.display td.center {
        text-align: center;
    }
编辑:我上传了两张图片来显示表格之间的差异

这就是未隐藏的表


这就是隐藏后使用jQuery显示的表。

这里是jQuery方法文档的一部分。显示:

由于没有参数,.show方法是最简单的显示方法 一个要素:

$'.target'.show

匹配的元素将立即显示,没有动画。 这大致相当于调用.css'display','block'

所以show将元素设置为display:block,这可能就是它在display:block中的外观

这是一个


可能您只需要编辑表格的css属性,使其在显示时看起来更漂亮:bock

CSS被破坏,因为jQuery的.show和.hide函数只是在display:none和display:block或display:inline之间切换,但是元素的display属性的默认值是display:table,而不是display:block,所以不使用$.datatable.show;和$.datatable.hide;使用以下命令:

$(".datatable").css({'display': 'none'});  // to hide the table, here you can
                                           //  still use jQuery's .hide()
$(".datatable").css({'display': 'table'}); // to show the table

当页面最初加载时,数据表是使用css文件形成的。然而,当它调用javscript时,它正在重建datatable并忽略我引用的任何CSS文件。因此,它会自动缩小表格以匹配文本的大小。通过在实际创建数据表时设置bAutoWidth=false,可以避免这种情况


感谢所有帮助过我的人

我试过了,但是问题是表格可能很大,这在表格应该在的页面上留下了很大的空白。啊,我明白了,我会清理我的答案;但是,它也提到了显示属性恢复到最初的状态。我可能在这里误解了它,但我认为这意味着它恢复了原来的CSS。但我可能错了:我想这意味着它会回到你的显示器上:没有;谢谢康斯坦丁,我把它修好了,把答案写进了我的答案里。谢谢你的帮助!。如果使用:style=display:block,效果如何?是不是马上就搞糟了?你能给我们看看css吗?因为这不是正常的行为,如果您删除显示:无;它看起来像你期望的那样吗?在你的照片中有一些东西定义了“描述”选项卡的宽度。。但是在你的CSS中,我看不到你对相关部分的更新。。我将数据保留为那样,因为它只是一组示例数据,很高兴它有所帮助!抱歉被叫醒,幸好这也不起作用。与上述问题相同。@Chaney该问题可能与页面的其他元素有关,请您用更多代码举例说明情况并查看其他元素之间的关系好吗?谢谢Haynar,我已将其修复并将解决方案放入我的答案中。谢谢你的帮助!。我不会说英语,但你的回答令人惊讶。。这就解决了我的问题。
$(".datatable").css({'display': 'none'});  // to hide the table, here you can
                                           //  still use jQuery's .hide()
$(".datatable").css({'display': 'table'}); // to show the table