jquery - 如何防止内容单击以在 jquery 中切换父级?
问题描述
我正在单击标题以切换内容....
我想要的是一旦显示内容......如果在黄色区域单击它,请防止切换它。(我正在使用li
,我希望它保持这种状态)
$(".liContent").hide();
$(document).on("click","li",function() {
$(this).find(".liContent").toggle();
});
li{margin:5px; border:1px solid red}
.liContent{background:yellow;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<ul>
<li>A <div class="liContent">A Content</div>
</li>
<li>B <div class="liContent">B Content</div>
</li>
</ul>
我该怎么做?
解决方案
通过向函数 ( ) 添加事件参数e
,您可以使用e.target
. 它与 不同$(this)
,后者指的是处理程序绑定到的元素(或者,在您的事件委托的情况下,委托的元素li
)。
要确保单击的元素不是 liContent
,您可以使用!$(e.target).is(".liContent")
:
if (!$(e.target).is(".liContent")) {
//.liContent was not clicked
}
$(".liContent").hide();
$(document).on("click", "li", function(e) {
if (!$(e.target).is(".liContent")) {
$(this).find(".liContent").toggle();
}
});
li {
margin: 5px;
border: 1px solid red
}
.liContent {
background: yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<ul>
<li>A
<div class="liContent">A Content</div>
</li>
<li>B
<div class="liContent">B Content</div>
</li>
</ul>
推荐阅读
- c++ - 为什么数组从 0 而不是 1 开始?(C、C++)
- go - 为什么`time.Since(start).Seconds()`总是返回0?
- java - 我在单个域(abc.ear 和 def.ear)中有 2 个 .ear 文件。我如何在他们之间进行交流
- java - 在构建 jar 并运行该 jar 时,外部依赖包的 @ComponentScan 在 2.1.x 中不起作用
- npm - NPM 错误!使用“npm start”时退出状态码 77
- firebase - 在 Firestore 中跟踪文档更改的推荐方法是什么?
- python - 我该如何处理最后一跳?
- flutter - 为什么我会失去变量的价值?
- javascript - javascript选择按字母顺序排序
- c++ - C++ Direct X 12 示例代码中看似无用的行