2010-05-18 13 views
5

Estoy usando el ajax para cargar un contenido div, pero el contenido div no toma el CSS de la página.Ajax load div, parte de CSS no funciona

Ejemplo: - Este enlace se cargará en

<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> 

En mi 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; 
} 

En mi test.html, es la misma mesa con registro diferente:

<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> 

El problema que estoy enfrentando es que antes de que se cargue "test.html", el CSS está bien. Pero después de hacer clic en el enlace que supone cargar cargas test.html, el fondo CSS aún se muestra, pero "cursor: puntero" e "imagen de fondo" ya no funcionan.

¿Qué debo hacer para que funcione? ¡Gracias de antemano!

Agregado en el código 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.'); 
     } 
     } 
    } 
+0

Por favor indicar el código en 'loadAjax()' –

+0

Hola Delan, han añadido en el guión. :) gracias – Sylph

Respuesta

3

Trate de añadir el mismo CSS para Test.html archivo. Si realmente está utilizando un iframe o está incrustando una página en otra, entonces el CSS no se insertará en cascada en la página incrustada. Se representa como su propio documento.

Actualización: Parece que podría necesitar agregar una clase a la primera celda de la fila para que tenga estilo. Test.html no tiene ningún elemento que tenga el estilo de la segunda sección de CSS, ya que no coincide con ningún elemento.

<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> 
+0

Gracias, he agregado el mismo CSS en el test.html, pero obtengo el mismo resultado. Intenté usar la herramienta de desarrollador de IE para rastrear el CSS. Puedo ver todas las otras CSS excepto el "cursor" y la "imagen de fondo" .. Me pregunto por qué :( – Sylph

+0

Intente agregar la clase de encabezado a la celda como he demostrado anteriormente. El problema es que el selector utilizado para el cursor y bg no coinciden con ningún elemento de la página. – Banzor

+0

¡Gracias Banzor! Funciona para CSS. Sin embargo, me pregunto si podría ayudarme con el javascript también? Tengo una función js, que ordenará el tabla cuando se hace clic en el encabezado. http://tablesorter.com/docs/ La función no funciona después de que el div se carga con el ajax. ¡Gracias de nuevo! – Sylph