问题说明:
比如页面中有一个输入框元素a,我点击它时会弹出一个窗体b,我在a blur事件中关闭弹出窗体(这种方法就无法点击b窗体中的内容了),
如何做到我点击除a/b外的元素才关闭弹出窗体?不会是给所有对象加监测事件吧?
问题说明:
比如页面中有一个输入框元素a,我点击它时会弹出一个窗体b,我在a blur事件中关闭弹出窗体(这种方法就无法点击b窗体中的内容了),
如何做到我点击除a/b外的元素才关闭弹出窗体?不会是给所有对象加监测事件吧?
<!DOCTYPE html>
<html>
<head>
<title>Click Event Example</title>
</head>
<body>
<input type="text" id="inputBox" placeholder="Click me">
<div id="popup" style="display:none;">
<p>This is the popup.</p>
<button id="popupButton">Click Me</button>
</div>
<script>
const inputBox = document.getElementById('inputBox');
const popup = document.getElementById('popup');
inputBox.addEventListener('focus', function() {
popup.style.display = 'block';
});
document.addEventListener('click', function(event) {
const target = event.target;
if (target !== inputBox && target !== popup && !popup.contains(target)) {
popup.style.display = 'none';
}
});
</script>
</body>
</html>
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
不在
输入框a
的blur
事件中关闭窗体b
,而是为document
添加click
事件监听,判断点击元素是否为输入框a
或者窗体b
,若不是则关闭窗体b
,示例如下:注意,若为单页面应用,应该在合适的时机
注册/销毁
对document
的click
事件监听,以避免异常情况发生。