2010-09-08 10 views
6

Así que hay 4 métodos principales que conozco para ejecutar el código de JavaScript desde un enlace. Para mis requisitos, necesito hacerlo sin mover la pantalla a ninguna parte (vincular a # y no devolver falso es malo). SEO también es importante para el código javascript ejecutado. Entonces, ¿cuál es la forma correcta de hacer esto?Forma correcta para que los enlaces ejecuten el código de JavaScript

método 1 (hay que asegurarse de MyCode() devuelve falso siempre): (? Parece tener más sentido)

<a href="#" onclick="return myCode();">execute</a> 

Método 2:

<a href="javascript:myCode();">execute</a> 

Método 3:

<a href="javascript:void(0);" onclick="myCode();">execute</a> 

método 4 (no tan agradable semánticamente como los demás, creo):

<span id="executeMyCodeLink" class="link">execute</a> 
<script> 
$('#executeMyCodeLink').click(myCode); 
</script> 

con el método 4, puede utilizar onclick así, por supuesto ..

Respuesta

5

Haces que la página no salte y utilizas una etiqueta "a" con un href y el método 4 usando preventDefault.

<a id="executeMyCodeLink" href="#">execute</a> 
<script> 
    $('#executeMyCodeLink').click(function(event) { 
    event.preventDefault(); 
    myCode(); 
    }); 
</script> 

Es importante incluir un href porque los enlaces no se ajustarán correctamente y su html no validará lo contrario.

+0

Esto parece tener más sentido, me gusta que jQuery tenga un mecanismo para esto sin depender de la devolución falsa, que tiene otras consecuencias. –

0

El uso de jquery es una manera discreta de manejar llamadas de JavaScript. Así que diría el método 4. También puede hacer:

$(a#linkId).click(...); 
0

Prefiero el método 4, también.

La vinculación de eventos a objetos dom por separado es una forma más elegante y creo que es un buen hábito de programación.

0

Me gusta el método 4 también. Siempre que sea posible, intento no poner nada directamente en los atributos pares o escribir js directamente en el href. Hago esto porque en la mayoría de los casos, en realidad pongo una url que no es js como href, por lo que se degrada para navegadores no habilitados. El segundo reson es que no me gusta contaminar elementos con cruft :-)

Cuestiones relacionadas