javascript - 通过单击添加类并捕获添加的类
问题描述
页面加载完成后,我可以用 jquery 添加一个类,如下所示。
$(document).ready(function() {
$("#parent").click(function(){
$(".child").addClass("active");
});
});
但我无法点击添加的类,它不起作用。
$(".child.active").click(function(){
alert('this is clicked');
});
你能帮帮我吗?
解决方案
由于.active
DOM 加载时孩子不在.child.active
,因此不会选择任何元素,因此不会添加孩子的事件处理程序。而是将处理程序添加到.child
单独的处理程序中,并在处理程序内部检查它是否处于活动状态:
$(document).ready(function() {
$("#parent").click(function() {
$(".child").addClass("active");
});
});
$('.child').on('click', function() {
if ($(this).is('.active')) {
console.log('this is clicked');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent">
parent
<div class="child">
child
</div>
</div>
或者在父点击处理程序中添加监听器:
$(document).ready(function() {
$("#parent").click(function() {
$(".child")
.addClass("active")
.off('click')
.on('click', function() {
if ($(this).is('.active')) {
console.log('this is clicked');
}
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent">
parent
<div class="child">
child
</div>
</div>
推荐阅读
- java - AssertJ Swing 无法在一台 Windows 10 机器上运行
- javascript - javascript中的过滤器数组在多个过滤器值的情况下未找到时删除项目
- visual-studio-code - TreeViewItem 项目上的命令单击,VSCode 扩展
- php - 将数据从控制器传递到刀片视图
- javascript - 使用 Express.js 响应计算量大的请求
- css - XSL 选择样式文本和 td
- javascript - 检查其他对象中是否存在键
- mongodb - 如何使用 MongoDB 聚合有条件地匹配搜索表单中不为空的字段?
- sql - 根据另一列获取最新值并独立对另一列求和
- javascript - 使用 Javascript 添加到嵌套在另一个 div 中的 div