js 有没有办法 判断一个dom元素是否已经绑定了某个事件

JavaScript015

js 有没有办法 判断一个dom元素是否已经绑定了某个事件,第1张

js 有办法 判断一个dom元素是否已经绑定了某个事件!

代码如下:

/*

* 事件注册

* @param Element ele

* @param String eventType

* @param Functionfn

* @param Boolean isRepeat

* @param Boolean isCaptureCatch

* @return undefined

*/

function loginEvent(ele , eventType , fn , isRepeat , isCaptureCatch){

if (ele == undefined || eventType === undefined || fn === undefined) {

throw new Error('传入的参数错误!')

}

if (typeof ele !== 'object') {

throw new TypeError('不是对象!')

}

if (typeof eventType !== 'string') {

throw new TypeError('事件类型错误!')

}

if (typeof fn !== 'function') {

throw new TypeError('fn 不是函数!')

}

if (isCaptureCatch === undefined || typeof isCaptureCatch !== 'boolean') {

isCaptureCatch = false

}

if (isRepeat === undefined || typeof isRepeat !== 'boolean') {

isRepeat = true

}

if (ele.eventList === undefined) {

ele.eventList = {}

}

if (isRepeat === false) {

for (var key in ele.eventList)

{

if (key === eventType) {

return '该事件已经绑定过!'

}

}

}

// 添加事件监听

if (ele.addEventListener) {

ele.addEventListener(eventType , fn , isCaptureCatch)

} else if (ele.attachEvent) {

ele.attachEvent('on' + eventType , fn)

} else {

return false

}

ele.eventList[eventType] = true

}

绑定事件 有直接在dom写el.on+type=function(){} 可以通过赋值重置为null

这种方式可以用typeof el.on+type =='function'

还有就是addEventListener/attachEvent,解绑就需要用removeEventListener/detachEvent

这个就难写了,我觉得如果事件是你自己绑定的,那就在绑定的时候,为元素添加属性标识

首先对于一些简单的html页面,

里面的js文件加载的也少的情况下,

我们可以可以使用的制台都可以轻松的查看.

浏览器的查看方法按F12选中你要看的dom元素在右侧的事件中可以详细的看到绑定了那些事件.