¿Por qué el controlador de evento de clic se activa inmediatamente después de la carga de la página?

Estoy jugando con una función que quiero vincular a todos los enlaces. En el presente, la función se dispara cuando se carga la página, en lugar de cuando hago clic en el enlace.

Aquí está mi código. (Puedo pasar en la función showDiv() si necesitas verla.) ¿Puedes decir si estoy haciendo algo malo o estúpido aquí?

 $(document).ready(function(){ $('a.test').bind("click", showDiv()); }); 

Gracias

Desea pasar una referencia a una función como una callback, y no el resultado de la ejecución de la función:

showDiv() devuelve algún valor; si no se utilizó ninguna statement de return , se devuelve undefined .

showDiv es una referencia a la función que debe ejecutarse.

Esto debería funcionar:

 $(document).ready(function(){ $('a.test').bind("click", showDiv); }); 

Alternativamente, puede usar una función anónima para realizar una función más avanzada:

 ...bind('click', function(){ foo.showDiv(a,b,c); ...more code... }); 

En algunas circunstancias, es posible que desee utilizar el valor devuelto por una función como callback:

 function function foo(which) { function bar() { console.log('so very true'); } function baz() { console.log('no way!'); } return which ? bar : baz; } ...click( foo( fizz ) ); 

En este ejemplo, foo se evalúa utilizando fizz y devuelve una función que se asignará como callback para el evento click.

Use la siguiente línea. showDiv() llamará a la función a la derecha cuando se ejecute esa línea.

 $('a.test').bind("click", showDiv); 

Parece que está llamando directamente a la función showDiv (y vinculando el resultado de la devolución de showDiv () al manejador de clics en lugar de vincularlo directamente.

Quieres algo como

 $(document).ready(function() { $('a.test').bind("click", showDiv); }); 

$('a.test').bind("click", showDiv); a: $('a.test').bind("click", showDiv); (No ponga parens alrededor de showDiv ya que quiere pasar la referencia de la función).