2013-01-17 50 views

回答

8

如果你想那麼簡單的方式暫時禁用所有點擊,要做到這一點不改變任何您的網頁或代碼的其餘部分是把一個透明的div絕對定位在整個頁面攔截並停止所有點擊事件的傳播。然後,使用setTimeout()以您想要的任何時間間隔刪除該透明div。

將blockDiv放入您的頁面HTML中,以便它已經存在。

在您的HMTL:

<body> 
    <div id="blockDiv"></div> 
    ... other page HTML here 
</body> 

然後,讓這個CSS的網頁:

#blockDiv { 
    position: absolute; 
    left: 0; 
    right: 0; 
    height: 100%; 
    width: 100%; 
    z-index: 999; 
} 

而且,這javacript:

$("#blockDiv").click(function(e) { 
    // stop propagation and prevent default by returning false 
    return false; 
}); 

setTimeout(function() { 
    $("#blockDiv").remove(); 
}, 700); 
1

使用的setTimeout

$('a').click(function(e){ 

    e.preventDefault(); 

    setTimeout(function(){ 
     // DO SOMETHING AFTER 700ms 
    },700); 

}); 
1

setTimeout是你想要的。

setTimeout()方法在指定的毫秒數後調用函數或評估表達式。

它有兩個參數:
1)函數或代碼來調用和
2)的毫秒數執行代碼/功能之前等待。

setTimeout(function(){ 
    //do your stuff 
},700); 
1

在這個ARTICAL看看,這將顯示如何懶洋洋地聆聽快速射擊事件

$.fn.bindDelayEvent = function(eventName, delay, fnc){ 
     $this = $(this); 

     var timer = undefined; 
     var delayFnc = function(){ 
      clearTimeout(timer); 
      var self = this; 
      var args = arguments; 
      timer = setTimeout(function(){ 
       fnc.apply(self, args); 
      }, delay); 
     } 
     $this.bind(eventName, delayFnc); 

    } 

    $(window).bindDelayEvent("resize", 1000, function() { 
     alert("click event fires after 1000ms") 
    }); 

How to listen lazily to rapidly firing events like window resize?

0

禁用頁面上的所有事件,是很容易的。難的部分是在需要時恢復它們。

document.body.innerHTML = document.body.innerHTML; 

這將通過用DOM的「處女」副本替換DOM來有效地移除綁定到DOM節點的所有事件。

大部分時間用戶甚至不會注意到重繪。

至於在一段時間後恢復它們,你可以用更換的innerHTML之前保存DOM的副本實驗:

oOldDom = document.cloneNode(1); 

,後來恢復它。