原生js事件的添加和删除

时间:2023-03-09 09:58:43
原生js事件的添加和删除

在IE浏览器中添加或删除事件用attachEvent、detachEvent。在其他标准浏览器中则用addEventListener、removeEventListener。下面的对事件的添加和删除做了封装。直接看代码吧!

/**
 * @description 事件绑定,兼容各浏览器
 * @param target
 *            事件触发对象
 * @param type
 *            事件
 * @param func
 *            事件处理函数
 */
function bind(target, type, func) {
	if (target.addEventListener) {// 非ie 和ie9
		target.addEventListener(type, func, false);
	} else if (target.attachEvent) { // ie6到ie8
		target.attachEvent("on" + type, func);
	} else {
		target["on" + type] = func; // ie5
	}
}
/**
 * @description 事件移除,兼容各浏览器
 * @param target
 *            事件触发对象
 * @param type
 *            事件
 * @param func
 *            事件处理函数
 */
function unbind(target, type, func) {
	if (target.removeEventListener) {
		target.removeEventListener(type, func, false);
	} else if (target.detachEvent) {
		target.detachEvent("on" + type, func);
	} else {
		target["on" + type] = null;
	}
}

其他补充关于addEventListener第三个参数的含义,详细请参考https://blog.othree.net/log/2007/02/06/third-argument-of-addeventlistener/这篇文章说的很清楚了。