在使用jQuery給元素綁定事件時(shí),我們通常使用.on() 方法來(lái)為元素添加事件處理函數(shù)。舉一個(gè)例子:
$(document).on('click', 'button', function() { // 在按鈕被點(diǎn)擊時(shí)執(zhí)行的代碼 });
上述代碼為頁(yè)面中所有的按鈕添加了一個(gè)點(diǎn)擊事件處理函數(shù)。但是,有時(shí)候我們需要在特定情況下才觸發(fā)事件,這時(shí)候就可以使用.on() 方法的另一個(gè)參數(shù)。例如:
$(document).on('click', 'button', function() { // 在按鈕被點(diǎn)擊時(shí)執(zhí)行的代碼 }).on('mouseover', 'button', function() { $(this).addClass('hover-state'); }).on('mouseout', 'button', function() { $(this).removeClass('hover-state'); });
在上面的例子中,我們使用.on() 方法分別綁定了三個(gè)事件:點(diǎn)擊事件、鼠標(biāo)移入事件和鼠標(biāo)移出事件。這些事件在按鈕被點(diǎn)擊、鼠標(biāo)移入、鼠標(biāo)移出時(shí)觸發(fā)相應(yīng)的處理函數(shù)。
除了在特定條件下才觸發(fā)事件外,我們還可以使用.on() 方法的三個(gè)可選參數(shù):data、selector 和 handler。這些參數(shù)分別表示事件的數(shù)據(jù)對(duì)象、事件的觸發(fā)對(duì)象和事件處理函數(shù)。例如:
$(document).on('click', 'button', {foo: 'bar'}, function(e) { console.log(e.data.foo); // 輸出 "bar" console.log(this); // 輸出被點(diǎn)擊的按鈕元素 });
在上面的例子中,我們?yōu)榘粹o添加了一個(gè)點(diǎn)擊事件處理函數(shù),并通過(guò)第一個(gè)參數(shù)傳遞了一個(gè)數(shù)據(jù)對(duì)象。這個(gè)數(shù)據(jù)對(duì)象可以在事件處理函數(shù)中通過(guò)事件對(duì)象的.data 屬性獲取,用于傳遞額外的數(shù)據(jù)。
總之,jQuery的.on() 方法是一個(gè)非常強(qiáng)大和靈活的事件處理函數(shù)。除了可以方便地綁定事件處理函數(shù)外,還可以在特定條件下觸發(fā)事件、傳遞數(shù)據(jù)對(duì)象等等。熟練使用.on() 方法可以大大提高我們的開(kāi)發(fā)效率。