javascript - 如何防止子节点上的父事件处理程序?
问题描述
我有一个 div,它被事件处理程序监听:
$('.thediv').click(function() {
$(this).remove()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="width:500px;height:500px">
<input type="input" style="width:100px;height:20px" />
</div>
如果单击该 div 将被删除。
但是,我想在 div 上放置一个文本输入框,如果用户单击文本输入,则不应删除 div。只有当用户点击输入框外的区域时,div 才会被移除。
我能做些什么?
解决方案
仅当事件的目标不匹配时才删除input
:
$('.thediv').click(function(e) {
if (!e.target.matches('input')) {
$(this).remove();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="thediv" style="width:500px;height:500px">
other div content
<input style="width:100px;height:20px">
</div>
推荐阅读
- c - 在c中的循环中中断而不是继续?
- python - VSCode:如何为 Python 配置“组织导入”(isort)
- python - 如何检查列表中是否有重复项?如果是这样,我如何检查有多少重复项?
- node.js - 使用 Node.js Passport 进行动态重定向
- ansible - 使用带有 ini 主机文件的 Jinja2 模板
- app-store-connect - 如何修复 App Store 连接在 fastlane 中显示未经授权的访问错误
- android - Flutter:连接NFC标签时如何启动应用程序
- javascript - 用于未定义长度数组的 useState 钩子
- matlab - 决策变量的数量如何影响 NSGA-II 中的总体?
- node.js - Localstorage 仅显示最新的数组字符串