翻過高山走不出你
2018-10-12 14:11:06
<body><button type="text" id="time">按鈕</button><script type="text/javascript"> function aa(x){ console.log(x);}//函數(shù)aa加了() 后會自動運行,并且綁定后的事件失效;不加()無法傳遞參數(shù);$("#time").on("click",aa(10));</script></body>問題描述:函數(shù)aa()在沒有點擊的情況下會自動運行,結(jié)束后,再點擊事件失效。
1 回答
素胚勾勒不出你
TA貢獻1827條經(jīng)驗 獲得超9個贊
簡單的方法,就是把你要執(zhí)行的函數(shù),直接寫在匿名函數(shù)回調(diào)里。像這樣:
$("#time").on("click", function(){
aa(10);
});而如果想用.on()函數(shù)直接寫的話,你就必須了解事件對象這個東西,顧名思義,事件對象就是DOM在事件發(fā)生時,監(jiān)聽被激活后丟給事件處理程序的一個數(shù)據(jù)集合,比如常見的ev.target啦ev.preventDefault()什么的都是。而如果想調(diào)用自定義參數(shù),則可以用event.data,另外傳遞自定義參數(shù)給處理程序需要這樣按照.on( events [, selector ] [, data ], handler(eventObject) )的語法來寫(詳情參考)。所以最后改成:
function aa(ev){ console.log(ev.data);
}
$("#time").on("click", 11, aa);就可以順利看到想要的結(jié)果了。
最后多說一句,其實如果不知道是用event.data,也可以用console.table()打印下對象,找到傳進去參數(shù)的位置也一樣能推導(dǎo)出這種寫法的。
添加回答
舉報
0/150
提交
取消
