Ajax load div, часть CSS не работает - PullRequest
5 голосов
/ 18 мая 2010

Я использую ajax для загрузки содержимого div, но содержимое div не принимает CSS страницы.

Пример: - Эта ссылка будет загружена в

<a href="#" onclick="javascript:loadAjax('test.html')">Test</a> 

<div id="result">
<table class="tablesorter">
<thead>
    <tr>
        <th>Header 1</th><th>Header 2</th>
    </tr>
</thead>
<tbody>

    <tr><td>Record 1</td><td>Desc 1</td></tr>
</tbody>    
</table>
</div>

В моем CSS:

table.tablesorter thead tr th, table.tablesorter tfoot tr th {
    background-color: #e6EEEE;
    border: 1px solid #FFF;
    font-size: 8pt;
    padding: 4px;
}

table.tablesorter thead tr .header {
    background-image: url(bg.gif);
    background-repeat: no-repeat;
    background-position: center right;
    cursor: pointer;
}

В моем test.html это та же таблица с другой записью:

<table class="tablesorter">
    <thead>
        <tr>
            <th>Header 1</th><th>Header 2</th>
        </tr>
    </thead>
    <tbody>

        <tr><td>Record 2</td><td>Desc 2</td></tr>
    </tbody>    
    </table>

Проблема, с которой я сталкиваюсь, заключается в том, что перед загрузкой «test.html» CSS в порядке. Но после нажатия на ссылку, которая предполагает загрузку test.html, фон CSS все еще отображается, но «cursor: pointer» и «background-image» больше не работают.

Что я должен сделать, чтобы это работало? Заранее спасибо!

Добавлено в код loadAjax:

   var http_request = false;
   function loadAjax(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      http_request.onreadystatechange = alertContents;
      http_request.open('GET', url + parameters, true);
      http_request.send(null);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
     // alert(http_request.status);
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('result').innerHTML = result;            
         } else {
            alert('There was a problem with the request.');
         }
      }
   }

1 Ответ

3 голосов
/ 18 мая 2010

Попробуйте добавить тот же CSS в файл test.html. Если вы на самом деле используете iframe или встраиваете страницу в другую, то CSS не будет каскадно вставляться во встроенную страницу. Он отображается как собственный документ.

Обновление: похоже, вам может понадобиться добавить класс в первую ячейку в строке, чтобы сделать его стилизованным. В test.html отсутствуют элементы, стилизованные во втором разделе CSS, поскольку он не соответствует ни одному элементу.

<table class="tablesorter">
    <thead>
        <tr>
            <th>Header 1</th><th>Header 2</th>
        </tr>
    </thead>
    <tbody>

        <tr><td class="header">Record 2</td><td>Desc 2</td></tr>
    </tbody>    
    </table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...