// 屏蔽點擊
$('body').css('pointer-events', 'none');
//恢復默認
$('body').css('pointer-events', 'auto');
var pop = function(msg, delay, cb) { var _msg = msg || '網絡不給力,請稍後再試試吧', _delay = delay || 3000; if($('#pop').hasClass('hide')) { $('#pop').removeClass('hide') } if($('#pop').length > 0) { $('#pop').html(_msg); } else { $('body').append('<div id="pop">'+_msg+'</div>'); } setTimeout(function() { $('#pop').addClass('hide'); cb && cb() }, _delay) }
以上是一個簡單的吐司效果(文字在中間顯示出來,3秒後自動消失)javascript
在顯示期間,下面的body元素,屏蔽點擊事件,css
消失後,恢復body點擊事件。 這樣一來不用去給body臨時綁定事件和去除事件綁定。html
pointer-events: auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit
不過在瀏覽器中 auto 和 none 就能夠了java
auto:效果和沒有定義pointer-events屬性相同,鼠標不會穿透當前層。。瀏覽器
none:元素再也不是鼠標事件的目標,鼠標再也不監聽當前層而去監聽下面的層中的元素。可是若是它的子元素設置了pointer-events爲其它值,好比auto,鼠標仍是會監聽這個子元素的。網絡