2014-09-28 45 views
-1

我想簡化我的代碼。我想在裏面寫一個帶有事件處理函數的函數,在這裏我可以快速輸入參數並消除一堆額外的輸入(經過幾個小時的編碼,這真的對我有所不同)。作爲示例,我爲.html方法(工作正常)創建了一個「快捷方式」功能,併爲.click事件處理程序創建了一個「快捷方式」功能。但是.click函數在用戶不點擊任何內容的情況下執行。我無法弄清楚爲什麼。
Here is a JSFiddle:爲什麼包含.click的函數在沒有點擊jQuery的情況下執行?

<!DOCTYPE html> 
<html> 
<head><meta charset="UTF-8"></head> 
<body> 

    <h1 style="background-color:#555">-.-</h1> 

    <button id="bu">How's awesome?</button> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

    <script type="text/javascript"> 

    var h1 = "h1"; 
    var bu = "#bu"; 
    var awesome = "You are awesome!"; 

    function html(a,b) {$(a).html(b);} 

    function yaa() {html(h1,awesome);} 

    function clickIt(a,b) {$(a).click(function(){b;})} 

    clickIt(bu,yaa()); 

    // $(bu).click(function(){yaa();}) 

    </script> 

</script> 

</body> 
</html> 
+0

歡迎來到SO。再次檢查你的代碼並使用JSFiddle.net – Rafee 2014-09-28 07:07:24

回答

1

您通過引用

function clickIt(a,b) {$(a).click(function(){b();})} // here 

clickIt(bu,yaa); // not here 

調用函數,而不是通過您可以通過然後通過引用傳遞b這優化了一下,jQuery將調用它。

function clickIt(a,b) {$(a).click(b)} 
相關問題