js 有没有办法 判断一个dom元素是否已经绑定了某个事件?
据我所知原生的不好弄(反正我是没办法搞),jquery的实现其实很简单。
jquery的事件都是事件委托,所有的事件都被它存了起来,判断某元素是否绑定了某事件,只需要在事件堆栈里面查询一遍就知道了。
用原生的,确实比较痛苦。不能判断是否已经绑定,但是如果处理函数(对象)未变的话,是可以 remove 的,用 removeEventListener 。
以下代码我在jquery3.5.1环境测试,可以正常运行:
// 绑定事件 $('.el').click(function(){ //... }); // 查询刚才绑定的事件 var eventList = $._data($('.el').get(0), 'events'); console.log(eventList);