在jQuery中,delegate()
函數(shù)用于將事件處理程序附加到動態(tài)添加的元素上。
delegate()
函數(shù)的語法如下:
$(selector).delegate(selector, eventType, handler)
參數(shù)說明:
selector
:字符串,用于指定要進行事件委派的元素的選擇器。eventType
:字符串,表示要委派的事件類型,如 “click”、“mouseover” 等。handler
:函數(shù),表示事件被觸發(fā)時要執(zhí)行的處理程序。使用delegate()
函數(shù)的好處是,它可以在元素動態(tài)添加到文檔中時,仍然能夠綁定事件處理程序。這對于處理一些需要在頁面加載完成后才出現(xiàn)的元素非常有用。另外,它還可以減少事件處理程序的數(shù)量,提高性能。
例如,假設(shè)有以下HTML結(jié)構(gòu):
<div id="parent">
<p>點擊這個段落來添加一個新的段落</p>
<div id="child">
<p>這是一個已經(jīng)存在的段落</p>
</div>
</div>
如果我們想要在點擊父元素#parent
時,動態(tài)添加一個新的段落元素并綁定事件處理程序,可以使用delegate()
函數(shù)來實現(xiàn):
$(document).ready(function() {
$('#parent').delegate('p', 'click', function() {
$('<p>這是一個動態(tài)添加的段落</p>').appendTo('#child');
});
});
在上面的例子中,當(dāng)點擊#parent
的子元素p
時,會動態(tài)添加一個新的段落元素到#child
中。
注意:自jQuery版本1.7起,推薦使用on()
函數(shù)來代替delegate()
函數(shù)。所以上述例子可以用on()
函數(shù)來改寫:
$(document).ready(function() {
$('#parent').on('click', 'p', function() {
$('<p>這是一個動態(tài)添加的段落</p>').appendTo('#child');
});
});