【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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章