保存元素的CSS并稍后重新应用

时间:2015-01-21 15:26:31

标签: javascript jquery html css twitter-bootstrap

是否可以保存所有“当前”应用于元素的CSS,然后重新应用它?我正在研究一个粘贴表标题,当我更改position:fixed时,它会丢失所有应用的样式。我目前保存列宽并重新应用于表头:

            $('#tableHeader').css({
                position:'fixed',
                width:$('#tablePanel').width(),
                top:$('#top').height(),
            });

            $('.column1Value').width(col1Width);
            $('#col1').width(col1Width);

            $('.column2Value').width(col2Width);
            $('#col2').width(col2Width);

            $('.column3Value').width(col3Width);
            $('#col3').width(col3Width);

            $('.column4Value').width(col4Width);
            $('#col4').width(col4Width);

            $('.column5Value').width(col5Width);
            $('#col5').width(col5Width);

            $('.column6Value').width(col6Width);
            $('#col6').width(col6Width);

            $('.column7Value').width(col7Width);
            $('#col7').width(col7Width);

这使得列的大小正确并且排列紧密,但是从某些地方应用了额外的填充或边距我无法完全弄清楚(可能是bootstrap),这使得标题和列不对齐。我希望有类似的东西:

var savedCSS = $('#table').css();并将其检索为$('#table').css(savedCSS)

1 个答案:

答案 0 :(得分:1)

您可以逐个保存您感兴趣的各个样式,然后使用您提到的jQuery("selector").css("styleName")方法重新应用它们,但我不会想到那里'一个简单的方法一次完成所有这些。这不是不可能的,但是一旦元素处于新的位置,它就不会非常有效,并且可能实际上不会给你想要的结果。

讨论之后,我们发现尺寸问题并非真正归因于样式,而是由于width正在计算的元素。

当元素正常放置在页面流中时,它会使用其最近定位的父级宽度,然后取下边距以查找子内容的宽度。

从页面流中删除元素时,其宽度将独立于父级。因此,要使两者匹配,请记录父级的宽度而不是元素本身,并设置宽度以匹配父级,而不是尝试维持元素的宽度。