2009-08-13 14 views
9

¿Puedo usar JQuery dentro de una función onClick?Usando JQuery dentro de onClick

Por ejemplo:

<a onclick="my_save_function($("#inputID").val())">
<input type=hidden id="inputID" value="foo">

De tal manera que, cuando se hace clic, la etiqueta de anclaje funciona esto:

my_save_function(foo);

Después de algunas búsquedas, no pude encontrar un tema similar Gracias por cualquier ayuda.

+0

Muchas gracias por las respuestas rápidas. Nunca dejo de sorprenderme la comunidad de SO. –

Respuesta

16

Sure. jQuery no existe en ningún universo especial; es solo una colección de funciones de JavaScript que puede encontrar (extraordinariamente) útiles.

Sin embargo, si usa jQuery de todos modos, ¿por qué no adjunta correctamente el evento onclick desde jQuery? Usted sólo tendría que hacer:

$(document).ready(function() { 
    $("#id-for-that-link").click(function() { 
     my_save_function($("#inputID").val()); 
    }); 
}); 
+0

No siempre es posible (o práctico) si uno, por ejemplo, está usando inyección html. – Karlth

+0

Si está inyectando HTML nuevo, puede adjuntar sus propios manejadores tan pronto como sea parte del DOM. El tiempo (es decir, la secuencia en el código) puede ser un poco diferente, pero los aspectos básicos de la vinculación de un controlador de eventos no son diferentes. – VoteyDisciple

+0

No es posible adjuntar controladores cuando se conecta al DOS. Depende de la estructura del proyecto, si, por ejemplo, solo controlas la creación del Html y no el código cuando se inyecta. – Karlth

3

probar esto (usted necesitará una identificación de la etiqueta de anclaje):

<a onclick="my_save_function(this.id);"> 

y en su javascript:

function my_save_function(elid){ 
    v = $("#"+elid).val(); 
    // do stuff with v 
} 
0

Honestamente , ya habías escrito el código y el marcado, ¿no podrías simplemente ejecutarlo y ver si funcionaba?

En respuesta a su pregunta, sí, esto debería funcionar bien, pero vea sus citas anidadas. Sería mejor forma y más fácil de leer/mantener si agrega un controlador de clic al elemento que insertar el cuerpo de la función en la cadena de atributo.

+0

Lo intenté. Sin embargo, estoy obteniendo un error de sintaxis en FireBug como este: error de sintaxis my_save_function ($ (Así que no estaba seguro si JQuery es incluso utilizable dentro de la función. Es por eso que pregunté. –

+0

Sí, creo que las citas lo hacían ... .ya sea que necesite usar comillas simples en el conjunto interno o escape las comillas dobles adicionales. – flatline

+0

Sí, eso resultó ser exactamente el problema. Gracias. :) –