Forcing to re-apply a style sheet in IE

2019-09-24 05:36发布

考虑这个HTML:

<ul>
<li>first</li>
<li>second</li>
<li>third</li>
</ul>

这个CSS:

li:first-child { background: yellow; }

与此Javascript(jQuery的):

$("ul").append($("li:first-child"));

http://fiddle.jshell.net/Xtuaf/

显然,在Internet Explorer(8) :first-child时,DOM发生了变化打破。 我在Javascript(;做造型有写了一个办法解决这个问题z-index在我的情况下,ES)。 这是一个丑陋速战速决,我想摆脱的。 一个更好的解决办法来迫使当DOM改变重新应用样式表。 可以这样做? 还是有其他的解决这个问题?

Answer 1:

在Internet Explorer中,回流可以通过设置类名被触发:

$("ul").append($("li:first-child")).addClass('x').removeClass('x');

或者只是(演示: http://fiddle.jshell.net/Xtuaf/1/ ):

$("ul").append($("li:first-child"))[0].className += '';


Answer 2:

可靠地导致整个DOM的回流的一种方法是快速添加和从所述主体元件除去的任意类。

$('body').addClass('foo').removeClass('foo');


文章来源: Forcing to re-apply a style sheet in IE