すべてのリンクにバインドしたい関数で遊んでいます。現在、リンクをクリックしたときではなく、ページが読み込まれたときに関数が起動します。
これが私のコードです。 (関数showDiv()
を投稿することもできます。必要な場合は、ここで投稿できます。)ここで何か間違っているのか、バカなのかを教えてもらえますか?
$(document).ready(function(){
$('a.test').bind("click", showDiv());
});
ありがとう!
関数の実行結果ではなく、コールバックとして関数にreferenceを渡したい場合:
showDiv()
は何らかの値を返します。 return
ステートメントが使用されていない場合、undefined
が返されます。
showDiv
は、実行する必要がある関数への参照です。
これは動作するはずです:
$(document).ready(function(){
$('a.test').bind("click", showDiv);
});
または、匿名関数を使用して、より高度な機能を実行できます。
...bind('click', function(){
foo.showDiv(a,b,c);
...more code...
});
状況によっては、want関数から返された値をコールバックとして使用できます:
function function foo(which)
{
function bar()
{
console.log('so very true');
}
function baz()
{
console.log('no way!');
}
return which ? bar : baz;
}
...click( foo( fizz ) );
この例では、foo
はfizz
を使用して評価され、クリックイベントのコールバックとして割り当てられる関数を返します。
ここで関数showDivを直接呼び出しているようです(showDiv()の戻り結果をクリックハンドラに直接バインドする代わりにバインドしています)。
あなたは次のようなものが欲しい
$(document).ready(function() { $('a.test').bind("click", showDiv); });
それを$('a.test').bind("click", showDiv);
に変更します(関数参照を渡したいので、showDiv
の周りに括弧を置かないでください)。