您的位置:首页 > Web前端 > JavaScript

js事件监听(考虑兼容性)

2017-05-08 14:23 169 查看

说明:

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: