jQuery中的delegate()方法可以幫助我們在處理動態事件時更方便地操作DOM元素。在使用delegate()方法時,我們可以使用this關鍵字引用綁定事件的元素。
$(document).delegate('#myButton', 'click', function(){ alert($(this).text() + '被點擊了'); });
以上代碼會在#myButton元素被點擊時觸發一個彈窗,其中$(this)將引用#myButton元素。這意味著我們可以在處理多個具有相同事件處理程序的元素時,僅使用單個事件處理程序。
使用delegate()方法而不是$(selector).click()方法有很多好處。其中一個重要的好處是,在使用delegate()方法時,在動態添加較多元素時,我們只需要綁定一個事件處理程序,即可處理所有元素的事件。這消除了我們必須針對每個元素使用相同的事件處理程序(可能通過循環)的需求,這可以大大優化我們的代碼。
$('body').delegate('a', 'click', function(){ alert($(this).attr('href') + '被點擊了'); });
此代碼將為頁面中的所有元素(無論其何時添加到DOM中)添加一個點擊事件。當用戶點擊任何一個鏈接時,它都會彈出一個包含鏈接的URL的警報。