我正在使用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.');
         }
      }
   }

最佳答案

尝试将相同的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>

关于javascript - Ajax load div,部分CSS无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2854169/

10-12 12:55
查看更多