2009-04-20 2 views
0

у меня есть несколько CSS селекторов, как это:Как я могу заставить Internet Explorer для применения стилей CSS

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

я установить атрибут расширения SortOrder для каждой из ячеек в JavaScript. Однако измененный стиль не отображается в браузере (IE7, возможно, другой), пока я немного переместил курсор. Как я могу заставить стили переоценивать?

Редактировать: Я не использовал IE6, как изначально указано, но IE7. Вопрос все еще остается.

ответ

2

Существуют различные способы взлома, позволяющие повторно выполнить рендеринг. script.aculo.us имеет метод forceRerendering (естественно), который выглядит следующим образом:

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

, которые должны работать в этом случае тоже.

1

IE6 не поддерживает селектор атрибутов или дочерних элементов, поэтому это не должно работать вообще. Вы используете ie7-js?


ОК, теперь я вижу. Это похоже на ошибку в IE (с использованием div и title для th и sortOrder имеет ту же проблему).

<!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 IE не применялся маркер.
следующий код помог:
    SetTimeout (функция() {. NewDiv.addClass ('tratata') removeClass ('tratata');}, 0);     // Синтаксис jquery

Смежные вопросы