我想知道哪种方法是处理依赖于变量状态的事件的正确方法。
现在,我有一个仅在选项isTablet
设置为true时添加的侦听器。(好像没有,它会在IE的旧版本中损坏)。所以看起来像这样:
if(options.isTablet){
document.addEventListener('touchmove', function(e){
....
});
}
现在,如果要isTablet
使用setter动态更改变量,会遇到麻烦,并且不会加载事件touchmove
。
$.fn.myPlugin.setIsTablet = function(value){
options.isTablet = value;
}
我猜最简单的方法是始终添加事件并在事件内部确定是否执行代码:
document.addEventListener('touchmove', function(e){
if(options.isTablet){
....
}
});
但是在IE 8中引发错误:
对象不支持属性或方法“ addEventListener”
这样做的方式是什么?谢谢。
通常,我总是会添加侦听器并检查其中的条件。为避免错误,由于您使用的是jQuery,只需使用jQuery:
$(document).on('touchmove', function(e){
if(options.isTablet){
....
}
});
如果您有一个经常调用的处理程序,则可以考虑在不需要时将其关闭。像这样的东西:
function myHandler(e) { ... }
$.fn.myPlugin.setIsTablet = function(value){
options.isTablet = value;
if (value) {
$(document).off('touchmove').on('touchmove', myHandler);
} else {
$(document).off('touchmove');
}
}
注意不要多次绑定处理程序(例如,如果连续true
发送setIsTablet
多次)。您也可以使用标志,而不是像我所示的那样取消绑定/绑定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句