2010-10-22 11 views
14

Tengo una instalación de WordPress y estoy tratando de usar jQuery para crear un efecto Cargar más. Tengo problemas para usar la función .load básica para los fragmentos de página. No me importa usar .get ya que vi algunos hilos aquí con respecto a eso como una mejor solución.¿Puede jQuery. Cargar agregar en lugar de reemplazar?

Aquí es mi estructura de la página URL y el contenido:

primera página: http://example.com/page/1/

El HTML:

<div id="articles"> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
</div> 

segunda página: http://example.com/page/2/

El HTML:

<div id="articles"> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
    <div class="story">blah blah blah</div> 
</div> 

que tienen un enlace en la parte inferior de la página y he intentado hacer lo siguiente:

jQuery(#articles).load('http://example.com/page/2/ #articles'); 

Lamentablemente, hay 2 números. Primero, la función .load toma el #articles div y su contenido de la segunda página y lo coloca en el #articles div existente. Eso significa que, incluso si esto funcionara, habría divs recursivos dentro de los divs resultantes de cada clic. Es simplemente desordenado.

¿Podría alguien ayudarme con el comando simplemente anexar el .story classes de la segunda página en el #articles div en la primera página? Puedo descubrir la logística de automatizarlo con variables, bucles y PHP para WordPress después. Solo necesito ayuda con la secuencia de comandos jQuery adecuada.

P.S. Cuestión de bonificación: si alguien sabe si jQuery .load/.get dañará las páginas vistas, lo que es importante para aquellos con ingresos publicitarios, ¡por favor hágamelo saber! Si cada .load/.get cuenta como otro hit para Google Analytics, ¡estamos bien!

Gracias!

+0

No creo que $ .load() tenga efecto en Google Analytics. Para que Google registre una vista de página, la página real debe cargarse de tal forma que se ejecute el JavaScript de google analytics. El JavaScript de google se ejecuta cuando una página se carga en una ventana del navegador, pero no cuando se está recuperando el contenido del archivo como lo está con $ .load(). – quakkels

Respuesta

32

, no podrá añadir contenido mediante el método jQuery.load(), pero se puede hacer lo que desee con jQuery.get():

$.get('/page/2/', function(data){ 
    $(data).find("#articles .story").appendTo("#articles"); 
}); 
+0

Gabriel, gracias! Tu código fue muy fácil de entender y funcionó de inmediato.Estoy usando tu código junto con el concepto de Znarkus para importar contenedores para saltar al lugar correcto. Solo tratando de descubrir cómo reescribir enlaces temporalmente, cualquier ayuda sería increíble. El problema se describe en el comentario anterior de Znarkus. –

+0

si quiere filtrar el contenido cargado get() no hará el trabajo. $ .load ('/ page/2/.posts'); por ejemplo – keinabel

+0

Acabo de tener un problema similar, y parece que funciona, pero me da un objeto vacío cuando lo registro en la consola para la depuración. Tampoco aparece nada en la página. :( – maxxon15

4

probablemente lo haría así.

$('#articles').append($('<div/>', { id: '#articles-page2' }); 
$('#articles-page2').load('http://example.com/page/2/ #articles > *'); 

#articles > * Obtiene todos los niños inmediatas para #article.

+0

Hola Znarkus, ¿podrías aclarar el código un poco más? ¿Necesitaré que el PHP genere DIVs llamados '# articles-page2',' # articles-page3', etc.? –

+0

Sí. Eso también lo haría es más fácil separar las páginas, lo cual es útil para manejar el historial correctamente (el usuario presiona el botón Atrás en el navegador). Luego, simplemente cargue la página 'http: // example.com/page # articles-page3' y el navegador se desplazará hacia abajo a ese conjunto de resultados – Znarkus

+0

¡Lo conseguí trabajando con tu idea y el código de Gabriel a continuación! Sin embargo, otra pregunta ligeramente relacionada. Tengo 'Load More' Estoy usando .attr para leer el valor de ese enlace para tomar la siguiente página para '.load'. Todavía quiero que sea un enlace en caso de que JS esté deshabilitado/no funcione/SEO. Pero ¿cómo puedo tener jQuery reescribirlo para desplazarse a la DIV' # articles-page2' que se generaría en línea para instancia? Gracias de nuevo! –

2

Para anexar datos, no creo que desee usar $ .load(). En su lugar, es posible que desee considerar el uso de $ .ajax().

$.ajax({ 
    url: 'yourlocation/test.html', 
    success: function(data) { 
    $('.result').html(data); 
    $("#yourdiv").append(data); 
    } 
}); 
2

Prueba esto funcionó para mí.

$('#articles').append($('<div/>').load('http://example.com/page/2/ #articles')); 
Cuestiones relacionadas