更多内容,请移步 JSCON-简时空
在有一种场景下,你想先屏蔽掉默认的系统事件,而在特定条件下又重新绑定回去。
【场景】H5页面,动画欢迎界面,共6帧;想在前5帧中屏蔽掉默认的touchmove事件,在第6帧是表单页面,想恢复系统默认的touchmove——这样用户可以自由拖拽页面,浏览完整的表单信息
原生JS: 目前我所能想到的最简单粗暴有效的方法是这样的:(没错,it works)
document.ontouchmove = function(e){return false;} if(index == 5){ document.ontouchmove = function(e){return true;}; }
jQuery: 有jQuery的日子才是好日子,使用jQuery你将变得更加的强大。任何一个元素将事件的原有事件handler
放在data-events
属性中。所以你在调用unbind
方法时,将其存储到一个变量中即可:(注意事件对象是一个数组)
var events = $('#test').data("events"); $('#test').unbind('click', events.click[0]);
或者:
var storedClick = $test.data('events').click[0].handler;$test.bind('click', storedClick)
原理:jQuery: Unbind event handlers to bind them again later 实例:http://jsfiddle.net/76GPF/
新闻热点
疑难解答