2009-04-20 24 views
0

を適用するにはInternet Explorerを強制することができます。は、どのように私は私はこのようなCSSセレクタのカップルを持っているCSSスタイルに

table.SearchCustomerResults > thead > tr > th[sortOrder="0"] {} 
table.SearchCustomerResults > thead > tr > th[sortOrder="1"] {} 

その後、私はJavaScriptでの細胞のそれぞれのはsortOrder拡張属性を設定します。しかし、カーソルを少し動かすまで、変更されたスタイルはブラウザ(IE7、おそらくはその他)に表示されません。スタイルを強制的に再評価するにはどうしたらいいですか?

編集:私は元々述べたようにIE6を使用しませんでしたが、IE7。しかし、まだ問題は残っている。

答えて

2

強制的に再レン​​ダリングするさまざまな方法があります。

someElement.appendChild(document.createTextNode(' ')); 
someElement.removeChild(someElement.lastChild); 

すぎ、この場合では動作するはず:script.aculo.usはこのようになりますforceRerendering(自然)と呼ばれる方法があります。

1

IE6は属性セレクタまたは子セレクタをサポートしていないため、これはまったく機能しません。 ie7-jsを使用していますか?


[OK]を参照してください。これはIEのバグのようです(thsortOrderにはdivtitleを使用して同じ問題があります)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
    <style> 
     th[sortOrder="0"] {color:red} 
     th[sortOrder="1"] {color:blue} 
    </style> 
    <script> 
     function changeSortOrder() { 
     // swap the orders so that blue is actually red and vice versa 
     document.getElementById("hdr0").setAttribute("sortOrder","1"); 
     document.getElementById("hdr1").setAttribute("sortOrder","0"); 
     //document.getElementById("hdr0").innerHTML += ""; 
     //document.getElementById("hdr1").innerHTML += ""; 
     } 
    </script> 
    </head> 
    <body onload="changeSortOrder()"> 
    <table class="SearchCustomerResults"> 
     <thead><tr> 
     <th sortOrder="0" id="hdr0">red</th> 
     <th sortOrder="1" id="hdr1">blue</th> 
     </tr></thead> 
    </table> 
    </body> 
</html> 

innerHTMLを変更する行は、このバグを回避するように見えます。しかし、Googleでの参照は見つかりません。

+0

申し訳ありませんが、私はIE7を使用していました。問題はまだ残っていますが、 – erikkallen

0

私は同様の問題がありました。新しいdivを挿入した後、余白が適用されませんでした。
次のコードは、助け:
   のsetTimeout(関数(){。newDiv.addClass( 'tratata')removeClass( 'tratata');}、0);     // jqueryの構文

関連する問題