国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery中on方法使用注意事項詳解

2019-11-19 17:34:46
字體:
來源:轉載
供稿:網友

on(eventType,[childSelector],[data],fn)

采用事件委托機制綁定事件,好處是子元素動態加入時無需再次綁定。

on方法可以傳入childSelector指定添加事件處理函數的具體子元素,還可以傳入對象格式的數據data,fn函數內部通過event.data.XXX獲取具體參數。傳入事件處理函數的data需要在事件綁定時就確定好,不同于trigger('eventType',[data]),tirgger方法中傳入的data(對象或數組形式)是事件發生時才計算的值。

如果同一個事件處理程序被多次綁定給同一個元素,觸發時就會執行多遍。所以綁定之前,需要先解綁之前的相同事件:

$(“selector”).off("click.xxx").on('click.xxx',function(){…});

如要在同一個元素上綁定不同事件處理函數,可以用事件的命名空間加以區分:click.forSpan、click.forDiv。

delegate()的源碼是調用on()方法,只不過參數順序變了,所以統一用on()。

事件觸發順序:

target是觸發事件的元素,不會變;currentTarget是事件處理函數當前所在的元素,會動態變化;delegateTarget是事件處理函數綁定的對象,不會變。

on方法利用了事件冒泡機制,事件會從事件源一直冒泡傳遞到document,并觸發相應元素的事件處理函數(若有)。

事件處理隊列:從觸發事件的元素開始,遍歷至delegateTarget,查找childSelector所指定的元素節點,并在事件處理隊列handlerQueue中壓入事件處理函數,最后將delegateTarget元素直接綁定的事件處理也壓入隊列(委托事件先于直接綁定的)。

on方法的冒泡過程中,具有事件處理函數的是delegateTarget元素而不是childSelector元素。

$("div").on('click','span',function(event){   alert("The span element was clicked."); }); $("p").click(function(event){   alert("The p element was clicked."); }); $("div").click(function(){   alert("The div element was clicked."); });

點擊span元素時,span元素上沒有綁定事件處理函數,冒泡傳遞到P元素,P元素有直接綁定的事件處理函數,最先彈出P;然后傳遞到最外層div元素,div元素有事件委托,jQuery會從target (span)遍歷到delegateTarget (div),查找childSelector節點,并壓入事件處理隊列中。最后壓入delegateTarget (div)元素直接綁定的事件處理函數。所以會彈出Span后彈出Div。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正定县| 长沙县| 昔阳县| 淮安市| 鄂州市| 鲁甸县| 宿松县| 东阿县| 板桥市| 兰溪市| 蕉岭县| 旌德县| 东乌珠穆沁旗| 哈尔滨市| 涿州市| 卓尼县| 江口县| 和田市| 营山县| 阜宁县| 大姚县| 江川县| 舒城县| 永丰县| 海兴县| 广宗县| 昆明市| 和平区| 平和县| 固安县| 阳原县| 两当县| 治县。| 剑阁县| 龙山县| 多伦县| 北宁市| 寻乌县| 轮台县| 方山县| 肃北|