if (href!="index.html"){} /* Lo cual significa: si el valor de href es distinto de index.html entonces ejecutar el código que hay entre{}
El otro problema sería más peculiar: si en el contenido (aparte de en el menú), tenemos enlaces que se comportan de la misma manera (recargando sólo el div contenedor), y en la información recargada tenemos otros enlaces que hacen lo mismo, es decir, si incluimos enlaces a contenido que queremos se recargue en ese mismo div contenedor, entonces el código no funcionará. ¿Porqué?, pues porque el código sólo hace referencia a las etiquetas que se encuentran en la página donde ejecutamos el código y no a las que están por venir, aunque tengan una clase o un id con el mismo nombre. ¿Solución? la hay y sencilla (necesario tener actualizado jQuery en la última versión mejor). La mejor solución sería usar la función ".on()" la cual extiende el evento realizado a las etiquetas que se vayan a cargar. La sintaxis sería así:
$("#content").on('click','.read_r a', function() {}
Y su significado sería: "busco dentro del id "#content" todos los "a" que tengan la clase ".read_r" y cuando se haga click en uno de ellos ejecutamos la función. Según dicen es mucho mejor que usar .delegate o .live.
El código completo nos quedaría así:
<script type="text/javascript">
$(document).ready(function(){
$("#content").on('click','.read_r a', function() {
var href = $(this).attr("href");
if (href!="index.html") {
$(this).attr({ href: "#"});
$("#content").css("display","none");
$("#cargando").css("display", "inline");
$("#content").load(href).fadeIn(700);
$("#cargando").css("display", "none");
}
})
})
</script>
El siguiente problema que surge, en un tipo de página como la que estoy describiendo, es que si el buscador nos muestra los enlaces que recargamos dentro del div contenedor entonces, al pinchar sobre ellos, veremos una página sin formato, porque, como ya dije en el post actualizar div contenedor, el código que recargamos no tiene las etiquetas <html>, <head>,<body>. La solución en código para redirigir a otra página.
Otros problemas que pueden surgir serían de visualización dependiendo del navegador usado.
Yo he tenido el siguiente problema con el chrome: no se cargaba el contenido al pinchar los enlaces. Pero esto no ocurre cuando subes la página al servidor.
Otro problema lo podéis tener con el IE en versiones iguales o inferiores a la 8. Si el contenido a recargar es código HTML, como es este caso, hay que tener cuidado con las etiquetas. Si tenemos alguna mal cerrada no se cargará el contenido.
Comentarios
Publicar un comentario