¿Hay una manera de hacer que los enlaces normales se cargan automáticamente a través de ajax, en lugar de lo normal?
-
11-09-2019 - |
Pregunta
No he explicado bien.
Pero lo que quiero decir es, si tengo un script ajax que carga el contenido de una página en un elemento DIV, a través de la función 'LoadPage (' whatever.php ') ;, en lugar de dar la vuelta manualmente haciendo esto para todos enlaces, hay una manera de tener un script que hace que automáticamente todos los enlaces regulares de carga a través de que la función ajax?
Al igual que en Facebook, su perfil se carga a través de ajax, sin embargo, si nos fijamos en su código, que sólo tienen una de manera regular en el perfil.
Saludos!
Solución
Sin duda, puede hacerlo con jQuery.
Este script pasa por el documento, encuentra todos los elementos de anclaje y se une a un controlador de eventos para el evento click de cada uno. Cuando se hace clic en el elemento de anclaje, el controlador de eventos se encuentra el atributo href y cargas de esa página en #targetDiv (se puede llamar a este div lo que quiera, por supuesto).
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("a").click(function() {
$("#targetDiv").load(($(this).attr("href") + " body");
return false;
});
});
</script>
...
<!-- In your document body, this is the div you'd load the pages into. -->
<div id="targetDiv"></div>
Otros consejos
Puede utilizar jQuery para esto (si entiendo su pregunta correcta).
En primer lugar puede hacer que el LoadPage función () de la siguiente manera:
function loadpage(divId, url) {
$('#' + divId).load(url);
return false;
}
.load () no es compatible con todos los navegadores sin embargo. Si desea hacer esto sin .load (), entonces usted puede comprobar fuera de .get (). Para obtener más información sobre .load (), echar un vistazo a http://docs.jquery.com/Ajax / cargar
Estoy asumiendo que sería algo como esto:
$(document).ready(function(){
$("a").click(function(){
$("body").load($(this).attr("href") + " body");
return false;
});
});
Esto haría que todas las etiquetas <a>
en la página de llamar a una función que descarga un documento HTML desde el atributo href
de la etiqueta, retirar de él la etiqueta que el cuerpo, y reemplazar el contenido de la etiqueta del cuerpo de la página actual con el contenido de la nueva cuerpo de la etiqueta. De esta manera, es más fácil de resolver esto sin JavaScript, así como integrarlo en un sitio existente.
Para usarlo, se coloca esto en una etiqueta <script>
en la cabecera de la página principal, o en un archivo externo de JS.
Tenga en cuenta, sin embargo, que este código sólo actualiza el contenido de la etiqueta <body>
, la cabeza (incluyendo la etiqueta del título) se mantiene intacta. Es posible que tenga que añadir código extra para actualizar cosas como esta.
sencillo y bonito. Mira esto: Bjax
Uso:
<script src="bjax.min.js" type="text/javascript"></script>
<link href="bjax.min.css" rel="stylesheet" type="text/css" />
Por último, incluir esto en la cabeza de su html:
$('a').bjax();
Para más opciones de configuración, la caja de demostración aquí: Bjax demostración