2016-05-13 48 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是一個全局定義字符串數組,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()); 

有人可以向我解釋這兩個實現,使匿名函數工作,但不是其他的?

回答

3

你需要傳遞給函數的引用,而不是把它叫做:

$(document).ready(main); 
3

只是通過它,不要調用它。遵守以下....

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

=>

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

*捂臉*非常有意義,有一次我想想。感謝您的快速回答。 – ViggyNash