on()函數(shù)用于為指定元素的一個或多個事件綁定事件處理函數(shù)。 從jQuery 1.7開始,on()函數(shù)提供了綁定事件處理程序所需的所有功能,用于統(tǒng)一取代以前的bind()、 delegate()、 live()等事件函數(shù)。 on()支持直接在目標(biāo)元素上綁定事件,也支持在目標(biāo)元素的祖輩元素上委托綁定。在事件委托綁定模式下,即使是執(zhí)行on()函數(shù)之后新添加的元素,只要它符合條件,綁定的事件處理函數(shù)也對其有效。
要刪除通過on()綁定的事件,請使用off()函數(shù)。
請參考下面這段初始HTML代碼:
<div id="main"> <p>測試代碼</p> <p>測試代碼</p> <em>測試</em></div><p>測試代碼</p>我們?yōu)閐iv中的所有p元素綁定點(diǎn)擊事件: 此種寫法有兩個特點(diǎn)(1.目標(biāo)元素可以支持祖輩元素上委托綁定 2.執(zhí)行on()函數(shù)之后新添加的元素符合條件)
$("div").on("click", "p", function(){ // 這里的this指向觸發(fā)點(diǎn)擊事件的p元素(Element) alert( $(this).text() );});為所有p元素綁定click事件處理程序 此種寫法有兩個特點(diǎn)(1.目標(biāo)元素為所有符合條件的元素 2.執(zhí)行on()函數(shù)之后新添加的元素不符合條件)
$("p").on("click", function(event){ // 這里的this指向觸發(fā)點(diǎn)擊事件的p元素(Element) alert( $(this).text() );});selector參數(shù):一個jQuery選擇器,用于指定哪些后代元素可以觸發(fā)綁定的事件。如果該參數(shù)為null或被省略,則表示當(dāng)前元素自身綁定事件(實(shí)際觸發(fā)者也可能是后代元素,只要事件流能到達(dá)當(dāng)前元素即可)。
on() 如果不傳selector參數(shù),那么就是直接綁定,不是事件委托機(jī)制;如果加了selector參數(shù),那就是事件委托,之后新添加的元素,只要符合條件,綁定事件依然有效。 比如要對頁面中所有的p標(biāo)簽綁定click事件,應(yīng)該這樣寫: $(document.body).on("click", "p", function(){ });
這樣,新添加的p元素也會綁定click事件。 深入點(diǎn)說,這個click事件實(shí)際上是綁定到 document.body 上面的,而不是每個p標(biāo)簽上,不過它的所有子孫節(jié)點(diǎn)發(fā)出了click事件,都會冒泡傳遞到 document.body,并觸發(fā)其綁定的click事件。jQuery再檢測這個click事件在冒泡的過程中是否”經(jīng)過”了”p”標(biāo)簽,如果是,就執(zhí)行我們指定的回調(diào)函數(shù)。
新聞熱點(diǎn)
疑難解答