![](/img/trans.png)
[英]How does one keep the tabkey from triggering the keyup/keydown event?
[英]How to stop Keyup event from triggering twice
Console.log打印兩次。 我嘗試使用e.stopPropagation(),e.preventDefault()和.stop()。 這是行不通的。 console.log應該只觸發一次
$('html').keyup(function (e) {
if (e.keyCode == 46) {
console.log("delete press");
e.stopPropagation();
e.preventDefault();
}
});
我前段時間也遇到過類似的問題。 我最終使用$.unbind()
和$.bind()
。 我將首先調用$.unbind()
來刪除該事件可能已經綁定到該事件的所有回調函數。 然后,我將在事件上調用$.bind()
,以便它可以執行我想要的操作。
$('html').unbind('keyup');
$('html').bind('keyup', function (e) {
您可能需要對事件進行防抖。
您可以使用lodash
類的lodash
輕松完成此操作,或者,如果您想學習它的工作原理,可以自己lodash
做。
function handler(e) {
if (e.keyCode == 46) {
console.log("delete press");
e.stopPropagation();
e.preventDefault();
}
}
$('html').keyup(lodash.debounce(handler, 250));
250是要對事件進行反跳的毫秒數,請注意事件是如何包裝的。
可以在這里找到所有選項的文檔: https : //lodash.com/docs/4.17.11#debounce
使用off()
分離事件也可以
$('html').off('keyup').on('keyup',function (e) {
if (e.keyCode == 46) {
console.log("delete press");
e.stopPropagation();
e.preventDefault();
}
});
要么
使用one()
僅執行一次事件處理程序
$('html').one('keyup',function (e) {
if (e.keyCode == 46) {
console.log("delete press");
e.stopPropagation();
e.preventDefault();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.