Заголовок сетки загружается в нижней части таблицы в IE8 при использовании jquery "html" для динамической загрузки таблицы - PullRequest
2 голосов
/ 30 ноября 2010

У меня есть таблица, которую я динамически загружаю на веб-сайт при нажатии кнопки.

Почему-то в IE8, когда я нажимаю кнопку, разметка CAPTION таблицы загружается в нижней части сетки.

Проблема связана с этой строкой CSS:

vertical-align:bottom;

Если я уберу его, я в порядке. Мне просто любопытно, если кто-нибудь знает конкретную причину, почему это происходит.

Кстати, "IE отстой" недостаточно конкретен.

Вы можете увидеть полную разметку примера ниже или нажмите здесь , чтобы увидеть его в действии:

<html>
 <head>
  <title>Table Test</title>

  <style type="text/css">
   .grid caption {
   background-color:#005abb;
   color:#FFFFFF;
   padding:0 0.25em;
   vertical-align:bottom;
   }
  </style>

  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
  <script type="text/javascript"> 
   $(document).ready(function() {
     $( "#_button" ).click(function() {     
     var newTableText = '<table cellspacing="0" cellpadding="4" border="0" class="grid"><tbody><caption>Now I\'m on da bottom</caption><tr class="gridHeader"><th>Code</th><th>A</th><th>P</th><th>R</th><th>RM</th><th>Totals</th><th>Percentages</th></tr><tr class = "gridRow"><td>1</td><td>1</td><td>0</td><td>0</td><td>0</td><td>1</td><td>50%</td></tr><tr class = "gridAlternatingRow"><td>2</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0%</td></tr></tbody></table>';     
     $( "#_table" ).html(newTableText);
    return false;
   });
   });//End of document ready
  </script>
 <body>

 <button id="_button" type="button">Click Me and watch the caption move to bottom</button>
 <div id="_table" style="width: 700px;">
  <table cellspacing="0" cellpadding="4" border="0" class="grid"><tbody><caption>I'm on top</caption>
  <tr class="gridHeader"><th>Code</th><th>A</th><th>P</th><th>R</th><th>RM</th><th>Totals</th><th>Percentages</th></tr>
  <tr class = "gridRow"><td>1</td><td>1</td><td>0</td><td>0</td><td>0</td><td>1</td><td>50%</td></tr>
  <tr class = "gridAlternatingRow"><td>2</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0%</td></tr>
  </tbody></table>
 </div>

 </body>
</html>

1 Ответ

1 голос
/ 30 ноября 2010

Простое исправление - указать DOCTYPE . DOCTYPE сообщает браузеру, по какому набору правил вы играете. Без этого IE вернется к quirks mode, который по сути является механизмом рендеринга IE 5.5. Это вызовет много странных побочных эффектов, включая то, что вы наблюдаете.

Я взял ваш пример и добавил следующее, и он отлично работает в IE9 (и IE9 в режиме IE8):

<!DOCTYPE html>

Также важно отметить, что IE требует, чтобы ничего не продолжалось DOCTYPE, в противном случае будет активирован режим причуд. Пробел в порядке, но нет комментариев или другой разметки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...