[英]How to bind the event listener to a specific div element?
我正在編寫一個腳本,該腳本基於綁定到document
的事件(當前/向下)執行一些操作(此刻)。
當同時按下某個鍵和shift-key(eg shift + a)
,將觸發某些動作。
除了我想將事件偵聽器綁定到特定的div
元素之外,它是有效的。
如果我具有以下HTML內容,為什么無法使用id屬性將事件偵聽器綁定到最外面的div
元素?
<div id="some-id" style="position: absolute; left: 0px; top: 0px;">
:
<div style="width: 100%; height: 100%; position: relative; left: 0px; top: 0px; padding: 0px; margin: 0px;">
:
<div style="width: 100%; height: 100%; position: absolute; left: 0px; top: 0px; padding: 0px; margin: 0px;">
:
</div>
</div>
</div>
這是因為您的div是空的,因此它沒有任何寬度或高度,因此任何div上都不會觸發任何事件。 嘗試向div添加一些內容。 或嘗試設置任何最里面的div的min-height
和min-width
屬性。
document.getElementById('some-id').addEventListener('click', () => { console.log('The click is working') })
<div id="some-id" style="position: absolute; left: 0px; top: 0px;"> <div style="width: 100%; height: 100%; position: relative; left: 0px; top: 0px; padding: 0px; margin: 0px"> <div style="width: 100%; height: 100%; position: absolute; left: 0px; top: 0px; padding: 0px; margin: 0px; min-width: 100vw; min-height: 100vh"> </div> </div> </div>
tabindex
設置為div zero
Focus
控制Focus
放在文檔加載上的div上 嘗試在下面運行演示:
$(document).ready(function(){ $("#some-id").focus(); shifted = false; $("#some-id").bind("keydown keyup", function(e) { switch(e.type) { case "keydown": console.log(e.key); if (e.key === "Shift") { shifted = true; } break; case "keyup": console.log(e.key); if (e.key === "A" && shifted === true) { console.log("Do your action") } shifted = false; break; } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="some-id" style="height: 200px; width: 200px; border: solid 1px" tabindex="0" > my div </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.