javascript - 關(guān)于原生js如何實(shí)現(xiàn)jquery的on()方法。
問(wèn)題描述
原生js如何實(shí)現(xiàn)jquery的on()方法,并且支持給一個(gè)元素同時(shí)綁定多個(gè)事件?
例如:
element.on(’click mouseout’,function(){...});
這樣的話用原生JS怎么實(shí)現(xiàn)?
問(wèn)題解答
回答1:給你一個(gè)簡(jiǎn)單的示例,如果你想在原生的JS中,使用on方法,可以這樣寫(xiě):
HTMLElement.prototype.on = function(events, callback){ let evs = events.split(’ ’); for(let event of evs){this.addEventListener(event, callback); } // 如果你想像JQuery一樣支持鏈?zhǔn)秸{(diào)用,可以在這里返回this // return this;}
這樣的寫(xiě)法有很多漏洞,因?yàn)楹芏嗲闆r都沒(méi)有考慮。比如IE的事件綁定沒(méi)有考慮。比如多個(gè)事件沒(méi)有考慮多個(gè)回調(diào)。
但是。畢竟是要告訴你思想,而不是給你重復(fù)造個(gè)輪子。
JQuery的實(shí)現(xiàn)大概也是這么個(gè)邏輯,你可以使用這樣的方法去封裝屬于自己的庫(kù)。
回答2:addEventListener
相關(guān)文章:
1. html5 - 如何實(shí)現(xiàn)帶陰影的不規(guī)則容器?2. html5 - 只用CSS如何實(shí)現(xiàn)input框的寬度隨框里輸入的內(nèi)容長(zhǎng)短自動(dòng)適應(yīng)?3. javascript - 三目運(yùn)算符的一些問(wèn)題4. python - uwsgi+django的搭建問(wèn)題5. css - 移動(dòng)端字體設(shè)置問(wèn)題6. javascript - ueditor引入報(bào)錯(cuò)問(wèn)題7. c++ - win7在不刪除管理員密碼的前提下(密碼不為空),如何設(shè)置開(kāi)機(jī)不需要密碼?8. html5 - H5 video 問(wèn)題9. javascript - 移動(dòng)端上不能實(shí)現(xiàn)拖拽布局嗎?10. javascript - 循環(huán)嵌套多個(gè)promise應(yīng)該如何實(shí)現(xiàn)?
