【Javascript】重新绑定默认事件

更多内容,请移步 JSCON-简时空

JS Event Model

在有一种场景下,你想先屏蔽掉默认的系统事件,而在特定条件下又重新绑定回去。

【场景】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/

posted @ 2014-11-19 19:51  JSCON简时空  阅读(3129)  评论(0编辑  收藏  举报