在web應(yīng)用開發(fā)過程中,input框常常伴隨著各種事件,比如keyup、keydown、click、blur等等。而jquery作為一款優(yōu)秀的js庫,自然也提供了非常方便的input事件添加方法,那就是on()方法。
on()方法可以方便地添加一個或多個事件監(jiān)聽器,使得在觸發(fā)這些事件時能夠執(zhí)行指定的回調(diào)函數(shù)。舉個例子,下面的代碼將input框的keyup、keydown、click、blur四個事件監(jiān)聽器全部綁定,當(dāng)觸發(fā)這些事件時都執(zhí)行相同的回調(diào)函數(shù)。
$('input').on('keyup keydown click blur', function() { console.log('event handler executed!'); });
除了綁定多個事件外,也可以通過on()方法分別為每個事件綁定不同的回調(diào)函數(shù),如下所示:
$('input').on({ 'keyup': function() { console.log('keyup event handler executed!'); }, 'keydown': function() { console.log('keydown event handler executed!'); }, 'click': function() { console.log('click event handler executed!'); }, 'blur': function() { console.log('blur event handler executed!'); } });
需要注意的是,以上兩種方法都是對已經(jīng)存在的input元素添加事件監(jiān)聽器。如果想要對動態(tài)創(chuàng)建的input元素添加事件監(jiān)聽器,需要使用on()方法的代理綁定。例如:
$('body').on('keyup keydown click blur', 'input', function() { console.log('event handler executed!'); });
在以上代碼中,事件監(jiān)聽器被添加到了body元素上,但只有符合選擇器'input'的子元素才會被觸發(fā)。這樣做的好處是可以避免因動態(tài)創(chuàng)建的元素沒有事件監(jiān)聽器而導(dǎo)致的錯誤。