2016-05-13 16 views
1

ボタンをクリックしたときに少しのテキストを変更するjQueryがあります。私が実装したときに(テキストは変更されません)Jqueryイベントハンドラは、匿名関数でのみ動作しますか?

$(document).ready(function(){ 
    $("#nn_button").click(function(){ 
     $('.nickname').empty(); 

     var random_name = nn_list[Math.floor(Math.random() * nn_list.length)]; 
     console.log(random_name); 
     $('.nickname').append("<p>" + random_name + "</p>"); 
    }); 
}); 

しかし、それは動作しません:このコードは、匿名関数内に実装されたときに正常に動作します(nn_listがfalseとして事前定義文字列のグローバルに定義された配列、nn_flagです)それ以外の無名関数として:

var main = function(){ 
    $("#nn_button").click(function(){ 
     $('.nickname').empty(); 

     var random_name = nn_list[Math.floor(Math.random() * nn_list.length)]; 
     console.log(random_name); 
     $('.nickname').append("<p>" + random_name + "</p>"); 
    }); 
} 
$(document).ready(main()); 

は、誰かが無名関数の作業を行い、これらの2つの実装の間で変更されますが、他のないものを私に説明できますか?

答えて

3

あなたは関数への参照を渡す必要があり、それを呼び出すことはありませ:

$(document).ready(main); 
3

はちょうどそれを渡し、それを呼び出すことはありません。私はそれについて考えたら、以下のことを守って....

$(document).ready(main()); 

=>

$(document).ready(main); 
+0

*手のひらを顔に当てる*、完璧な理にかなっています。迅速な答えをありがとう。 – ViggyNash

関連する問題