jQuery防止重复绑定事件的解决方法 及 原生js绑定和解除事件
程序员文章站
2022-03-27 17:11:44
...
大家都知道用bind绑定事件,需要用unbind去解除,用on绑定,则用off解除
- on()和bind()的函数的区别:
bind(type, [data], fn)
on(type,[selector],[data],fn)
- 常用的是on的方式
- 解除绑定的方法
$("#btn1").off("click").on("click",function(){
alert("我是btn1!");
});
$("body").off("click",'.closeBtn').on("click",'.closeBtn', function () {
this.$elm.hide();
})
原生js绑定和解除事件
// 事件绑定
var bindHandler = (function() {
if (window.addEventListener) {// 标准浏览器
return function(elem, type, handler) {// elem:节点 type:事件类型 handler:事件处理程序
// 最后一个参数为true:在捕获阶段调用事件处理程序 为false:在冒泡阶段调用事件处理程序
elem.addEventListener(type, handler, false);
}
} else if (window.attachEvent) {// IE浏览器
return function(elem, type, handler) {
elem.attachEvent("on" + type, handler);
}
}
})();
// 事件解除
var removeHandler = (function() {
if (window.removeEventListerner) {// 标准浏览器
return function(elem, type, handler) {
elem.removeEventListerner(type, handler, false);
}
} else if (window.detachEvent) {// IE浏览器
return function(elem, type, handler) {
elem.detachEvent("on" + type, handler);
}
}
})();