2010-09-24 16 views
5

Estoy tratando de seleccionar el primer enlace en una página después de que la página se haya cargado completamente y redirija la página al enlace en la primera página.JQuery - Obtener valor usando un selector

Entiendo cómo usar un selector, pero no estoy seguro de cómo puedo recoger el primer elemento después de que se carga la página. Estoy asumiendo que una vez que tenga el valor que podría utilizar

window.location = "http://www.google.com/" 

A continuación, llevar al usuario a la página correcta una vez que tenga el valor de la relación dinámica.

+0

¿Alguna vez resolver esto con éxito? ¿Aún necesitas ayuda con esto? – jcolebrand

Respuesta

4
jQuery(document).ready(function() { 
    window.location = jQuery("a[href]:first").attr("href"); 
}); 

Un selector con la pseudo-clase :first selecciona el primer elemento coincidente. Para obtener más información sobre los selectores, consulte jQuery's excellent documentation.

EDITAR

en realidad se acabó mi código y notó que volvía una cadena vacía. Esto se debió a que estaba recogiendo la primera etiqueta a que sucedió a no tiene un atributo href. Cambié el selector para que solo seleccione etiquetas a con un atributo href.

+0

Me pregunto si no sería mejor usar el método encadenado '.attr ('href')' en este caso, solo porque está aprendiendo jQuery. Me doy cuenta de que el atributo href va a estar allí porque es un enlace, pero también podría usar el mismo concepto en otro elemento si el attr está allí. (sobre todo un comentario de @Ryan, no tanto @Vivn Paliath, pero un buen comentario para comentario) – jcolebrand

+0

@drachenstern - Creo que me pillaste en medio de una edición - Lo cambié a 'attr (" href ")' por la misma razón que proporcionó :) –

+0

~ Jaja, bueno ... ¿no odias cuando otros te atrapan a mitad de la edición? ;) ... – jcolebrand

3

Para su selector, utilice a: primero. Esto le dará la primera etiqueta de anclaje en la página. Luego puede establecer la ubicación en el atributo href de la etiqueta de anclaje.

algo como:

location = $("a:first").attr("href"); 
1

¿Está usando esta sintaxis por casualidad en una etiqueta de script en su página?

$(document).ready(function(){ 
    // Your code here 
}); 
0
$(document).ready(function(){ 
    $('a').each(function(){ 
    if($(this).attr('href').indexOf('http')==0) { 
     window.location = $(this).attr('href'); 
    } 
    }); 
}); 

Este código funcionará porque: Esto hace que la página no se necesita una etiqueta de anclaje estático() y confundirlo con un enlace. Solo usará ese enlace si comienza con un http: y si no, pasa a la siguiente aparición de la etiqueta.

+0

~ te perdiste un ''' en tu código ... – jcolebrand

+0

jeje ... y yo también tenía los paréntesis equivocados . ¡Actualizado! Y su apéndice a continuación sobre la función de documento preparado es perfecto. No debería olvidar eso ... – jeffkee

+0

FYI Los métodos anteriores que seleccionan 'a [href]' no funcionarán porque algunos enlaces tienen '#' en ellos por cualquier razón. – jeffkee

2

Señalaré que los redireccionamientos son fácilmente vencidos. No confíe en esto para nada "seguro".

También puede encontrar que necesita la primera ancla que en realidad tiene un href:

$("a[href]:first").attr("href"); 
+1

No es necesario especificar el elemento 0-ésimo y, de hecho, ¿eso podría causar problemas si su conjunto envuelto no contiene elementos? Reescribiría eso como $ ("a [href]: first"). Attr ("href"); – Aaron

Cuestiones relacionadas