3

この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/

どうやらInternetExplorer(8):first-childでは、DOMが変更されたときに壊れます。この問題の回避策をJavascriptで作成しました(そこでスタイリングを行いますz-index。私の場合はesです)。それは私が取り除きたい醜いクイックフィックスです。より良い解決策は、DOMが変更されたときにスタイルシートを強制的に再適用することです。これはできますか?または、この問題に対する他の解決策はありますか?

4

2 に答える 2

3

Internet Explorerでは、クラス名を設定することでリフローをトリガーできます。

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

または単に(デモ: http: //fiddle.jshell.net/Xtuaf/1/):

$("ul").append($("li:first-child"))[0].className += '';
于 2012-10-17T14:45:59.983 に答える
1

DOM全体のリフローを確実に発生させる1つの方法は、body要素から任意のクラスをすばやく追加および削除することです。

$('body').addClass('foo').removeClass('foo');
于 2012-10-17T14:49:34.510 に答える