JS中event.preventDefault()取消默認事件能否還原?
event.preventDefault()是通知瀏覽器不要執行與事件關聯的默認動作。,比如document.addEventListener("touchmove", function (e) { e.preventDefault(); }, false);來阻止在手機上的滾動,但是阻止後還能再激活嗎?
document.addEventListener("touchmove", function (e) {
e.returnValue = true;
}, false);
親測好用,關鍵是可以放在不同事件當中也可以
在 touchstart 事件中綁定 touchmove
在 touchend 中解除 touchmove 綁定即可$("#id").on(" touchstart",function(){ $("#id").on("touchmove",function(event) { event.preventDefault();}, false);
})
$("#id").on(" touchend",function(){ $("#id").unbind("touchmove");})用$("body").bind("touchmove",function(event){event.preventDefau/code});取消了body的拖動事件。
恢復這個拖動事件只要$("body").unbind("touchmove");
非常實用。
取消綁定事件,然後再重寫一個綁定事件比如:$("a").click(function() {event.preventDefault()}).off("click").click(function() {console.log("OK")});依然可以打開新窗口。
var o = document.querySelector("a");
function fn(ev) {
ev.preventDefault();
}
//阻止默認行為
o.addEventListener("click",fn);
//取消阻止默認行為
o.removeEventListener("click",fn);
//這樣好像是可以的?
最近在做一個頁內工具,需要實現解綁/恢復頁內所有元素的點擊事件方法。總算嘗試出一種方法。
var events_b = $._data($("#id")[0],"events"); //儲存
$._data($("#id")[0],"events",{}); //解綁
$._data($("#id")[0],"events",events_b); //恢復
注意不要用原生的unbind()解綁,會無法恢復。
此法適用於包括默認方法和自定義方法在內的所有方法。在jquery1.8以上有效。貌似無法還原本來的默認事件,只能重新綁定事件了
$("#id").on("touchmove",function(event) { event.preventDefault(); }, false);$("#id").unbind("touchmove");
document.addEventListener("touchmove", function(e){bodyScroll(e)}, false);這樣就可以了
推薦閱讀:
※這兩個js有衝突嗎?
※svg 和 canvas在移動端的兼容性如何?尤其是在動畫方面。謝謝!?
※vw相比rem,在實際開發中究竟有多大區別?
※如何快速開發多端應用?
※Qt 5.7使用QWebEngine載入html做UI,但運行庫卻近70M,如何能減少體積?
TAG:前端開發 | JavaScript | HTML5 | jQuery | 網頁應用 |