84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Wie kann natives JS die on()-Methode von jquery implementieren und die gleichzeitige Bindung mehrerer Ereignisse an ein Element unterstützen?
Zum Beispiel:
element.on('click mouseout',function(){...});
Wie implementiert man dies mit nativem JS?
给你一个简单的示例,如果你想在原生的JS中,使用on方法,可以这样写:
HTMLElement.prototype.on = function(events, callback){ let evs = events.split(' '); for(let event of evs){ this.addEventListener(event, callback); } // 如果你想像JQuery一样支持链式调用,可以在这里返回this // return this; }
这样的写法有很多漏洞,因为很多情况都没有考虑。比如IE的事件绑定没有考虑。比如多个事件没有考虑多个回调。
但是。毕竟是要告诉你思想,而不是给你重复造个轮子。
JQuery的实现大概也是这么个逻辑,你可以使用这样的方法去封装属于自己的库。
addEventListener
给你一个简单的示例,如果你想在原生的JS中,使用on方法,可以这样写:
这样的写法有很多漏洞,因为很多情况都没有考虑。比如IE的事件绑定没有考虑。比如多个事件没有考虑多个回调。
但是。毕竟是要告诉你思想,而不是给你重复造个轮子。
JQuery的实现大概也是这么个逻辑,你可以使用这样的方法去封装属于自己的库。
addEventListener