Por que clicar no manipulador de events é acionado imediatamente após o carregamento da página?

Eu estou brincando com uma function que quero vincular a todos os links. No momento, a function é acionada quando a página é carregada, em vez de quando clico no link.

Aqui está meu código. (Eu posso passar na function showDiv() se você precisar ver.) Você pode dizer se estou fazendo algo errado ou estúpido aqui?

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

obrigado

Você deseja passar uma referência para uma function como um retorno de chamada e não o resultado da execução da function:

showDiv() retorna algum valor; se nenhuma instrução de return for usada, undefined será retornado.

showDiv é uma referência para a function que deve ser executada.

Isso deve funcionar:

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

Como alternativa, você poderia usar uma function anônima para executar uma function mais avançada:

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

Em algumas circunstâncias, você pode querer usar o valor retornado por uma function como um retorno de chamada:

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

Neste exemplo, foo é avaliado usando fizz e retorna uma function que será designada como o retorno de chamada para o evento click.

Use a linha abaixo. showDiv() chamará a function imediatamente quando essa linha for executada.

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

Parece que você está chamando a function showDiv diretamente lá (e vincula o resultado de retorno de showDiv () ao manipulador de clique em vez de vinculá-lo diretamente.

Você quer algo como

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

Altere para: $('a.test').bind("click", showDiv); (não coloque parens em torno de showDiv pois você quer passar a referência da function).