我们自己写的插件有时会在某个对象绑定事件on(),不需要这个插件时还会销毁事件off(),如果我们不限定解绑范围的话,可能会影响到相同对象的相同事件,举个栗子,大家可能明白些:
a:(错误解绑方式)
<span style="white-space:pre"> </span>$(document).on('mouseup', function() {
console.log(123);
});
$(document).on('mouseup', function() {
console.log(456);
});
$('.btn').on('click', function() {
$(document).off('mouseup');
});
如果我们只想解绑输出123的mouseup事件,这样解绑就会影响到456
b:(正确解绑方式)
<span style="white-space:pre"> </span>$(document).on('mouseup.a', function() {
console.log(123);
});
$(document).on('mouseup.b', function() {
console.log(456);
});
$('.btn').on('click', function() {
$(document).off('mouseup.a');
});
在时间后面加上自定义命名空间,解绑的时候就方便很多了