我頁面上有一個button按鈕,<input type="button" id="subb"value="button" />然后我在js文件中這樣寫:function aa(){alert("haha");}$("#subb").click(aa());執行結果為:在頁面加載時就彈出對話框“haha”若把js改為如下形式:function aa(){alert("haha");}$("#subb").click(aa);執行結果:點擊按鈕后,才彈出對話框把js改為如下的形式:function aa(){alert("haha");}$("#subb").click =aa();執行結果為:在頁面加載時就彈出對話框“haha”對于第一種和第三種情況,我是真的不能理解,為什么頁面剛加載時就進行了,那按鈕的click事件到底是執行了還是沒執行啊?求詳細解答!感激不盡!
2 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
javascript的語法非常靈活,你只要知道自己想要什么效果,哪種寫法能實現這個效果就行。
正常的寫法
$( "#subb" ).click( function () { alert( "haha" ); }); |
通常都真么寫。
$().ready( function (){ $( "#subb" ).click( function (){ alert(1); alert( "haha" ); }); }); |

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
你好,點擊事件click中加的其實是一個函數:
$( "#subb" ).click( function (event) { /* Act on the event */ }); |
上面的代碼是一個匿名函數,也可以是你說的第二種情況:
$( "#subb" ).click(aa); |
上面代碼click之后執行函數aa。
你上面第一種和第三種情況其實是把函數執行的結果返回給了點擊事件,因為函數aa后面加了()說明函數已經執行了。而你的函數里面沒有返回內容,所以返回的內容是undefined。
所以第一種和第三種情況一開始就執行了函數,而不是你click事件觸發的。
添加回答
舉報
0/150
提交
取消