说明:
Internet Explorer 8 及更早IE版本不支持 addEventListener() 方法,Opera 7.0 及 Opera 更早版本也不支持。 但是,对于这些不支持该函数的浏览器,你可以使用 attachEvent() 方法来添加事件句柄。
Internet Explorer 8 及更早IE版本不支持 removeEventListener() 方法,Opera 7.0 及 Opera 更早版本也不支持。 但是,对于这些不支持该函数的浏览器,你可以使用 detachEvent() 方法来移除由 attachEvent() 方法添加的事件句柄 。
(以上摘自菜鸟教程)。
关键字:
addEventListener,attachEvent,removeEventListener,detachEvent
JS工具类代码:
- $(function() {
- //添加,移除监听事件,考虑兼容性
- $.fn.extend({
- /**
- * 参考原生JavaScript添加事件监听,
- * element.addEventListener(event, function, useCapture)
- * @param {Object} type 必须。事件名
- * @param {Object} handle 必须。指定要事件触发时执行的函数
- * @param {Object} bool 可选。布尔值,指定事件是否在捕获或冒泡阶段执行
- */
- addEvent: function(type, handle, bool) {
- var el, thisLen = this.length;
- bool ? bool = bool : bool = false; //bool
- if(thisLen == 1) {
- el = this[0]; //jquery对象转成 js对象
- el.addEventListener ? el.addEventListener(type, handle, bool) :
- el.attachEvent('on' + type, handle);
- } else {
- for(var i = 0; i < thisLen; i++) {
- el = this[i];
- el.addEventListener ? el.addEventListener(type, handle, bool) :
- el.attachEvent('on' + type, handle);
- }
- }
- },
- /**
- * 参考原生JavaScript移除事件监听,
- * element.removeEventListener(event, function, useCapture)
- * @param {Object} type 必须。事件名
- * @param {Object} handle 必须。指定要移除的函数
- * @param {Object} bool 可选。布尔值,指定事件是否在捕获或冒泡阶段执行
- */
- removeEvent:function(type,handle,bool){
- var el, thisLen = this.length;
- console.log(this)
- bool ? bool = bool : bool = false; //bool
- if(thisLen == 1) {
- el = this[0]; //jquery对象转成 js对象
- console.log(el.removeEventListener)
- el.removeEventListener ? el.removeEventListener(type, handle, bool) :
- el.detachEvent('on' + type, handle);
- } else {
- for(var i = 0; i < thisLen; i++) {
- el = this[i];
- el.removeEventListener ? el.removeEventListener(type, handle, bool) :
- el.detachEvent('on' + type, handle);
- }
- }
- }
- })
- })
调用:
- $('#main').addEvent('touchstart',start);
- //跳转某页面
- $("#main").addEvent('click',function(e){window.location.href='a.html';event.stopPropagation();},true);
如果还是不懂可参考此文章:https://www.cnblogs.com/cnblogs-jcy/p/6038965.html