2010-12-02 18 views
22

Estoy tratando de activar un enlace haga clic para .jquery. ¿Alguien sabe por qué lo siguiente no funciona?Cómo simular el enlace de anclaje haga clic en

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="en"> 
    <head> 
    <title>test</title> 
    </head> 
    <body> 
    <div> 
     <a id="google_link" href="http://google.com" target="_blank">click to go to google</a> 
    </div> 
    <div id="google_link_proxy">click here to do the same as the link above</div> 

    <script type="text/javascript">  
    $("#google_link_proxy").click(function(event){ 
     $("#google_link").click(); 
    }); 
    </script> 
    </body> 
</html> 
+0

'.observe()' y '.fireEvent()'? ¿Huh? ¿Dónde aprendiste jQuery? Sugeriría [este libro] (http://www.amazon.com/jQuery-Action-Bear-Bibeault/dp/1933988355). La [documentación de la API de jQuery] (http://api.jquery.com/) también es excelente como referencia. – BalusC

+0

No debe editar su pregunta para cambiar el significado original de la misma. – JCM

+0

¿Por qué en este mundo estás agregando las respuestas a tu pregunta? De esta forma no podremos entender, cuál fue tu problema y qué respuesta te ayudó. –

Respuesta

17

Parece que su selector $("google_link_proxy") está desactivado. Pruebe $("#google_link_proxy").

También debe cerrar la llamada de atención con }).

Esos son los errores de sintaxis con el código anterior, aunque no creo que esas funciones se proporcionen en jQuery de forma predeterminada.

Aquí es lo que creo que está buscando:

$("#google_link_proxy").click(function(event){ 
    window.open($("#google_link").attr('href'),'_blank') 
}); 
+0

esto es lo que terminé usando. No sé por qué $ ("# ..."). click() no funcionaba. gracias – RayLoveless

+0

Hola, ¿sabes por casualidad si esto es compatible en todos los navegadores? – mirosval

+0

Sí, creo que es compatible con todos los navegadores. –

2

Uso click()

$("#google_link_proxy").click(
    function(){ 
     $("#google_link").click(); 
    } 
); 

fireEvent y observar que no es parte de la API jQuery

+0

arg .. Hice esas ediciones de errores y todavía no está funcionando. – RayLoveless

+0

El '.observe()' tampoco forma parte de jQuery API. – BalusC

+0

Editado para tener un mejor ejemplo. FYI: los bloqueadores de pop-ups pueden bloquear esto. – epascarello

2

Asegúrate de que tienes el código de jQuery envuelto en un listo bloque como

$(document).ready(function(){/* your code here */}); 

Esto asegura scripts se dispararon después de todo el contenido y las imágenes se cargan.

21

Si utiliza jQuery y el DOM nativa, el ancla se puede hacer clic

// insert an <a> into document and click it **natively** 
// (.get(0) returns the DOM element) 
$('<a id="fred99" />').attr('href', '#david').attr('target', '_blank') 
.text('LINK').appendTo('body').get(0).click(); 

// now we've clicked, tidy up 
$('#fred99').remove(); 
+5

IMO, esta es la verdadera solución como llamar haga clic en un enlace existente al que actualizó el valor de href a través de javascript no abre la url. Además, esto no será bloqueado por un bloqueador de pop-ups ya que no usa window.open. Esta solución funciona perfectamente, ¡gracias! –

32

El método jQuery ignora por completo href:

$('#google_link').click(); // ignores href! 

El método DOM nativa hace lo correcto:

$('#google_link')[0].click(); 

Esto funciona independientemente de si el href es una URL, un fragmento (p. #blah) o incluso un javascript:.

+1

¡Sí! O si le gusta mejor esa sintaxis, use el método '.get()' de jQuery: '$ ('# google_link'). Obtenga (0) .click();' –

+0

Esto definitivamente debería ser la respuesta aceptada, junto con @MarkusAmaltheaMagnuson El comentario de Gracias chicos. –

Cuestiones relacionadas