jquery - 我想删除之前添加的课程
问题描述
我想在同一个标签中删除和添加类。
假设我有一个标签名称:
<button class="a">change class</button>
现在,当我通过选择类选择器单击此按钮时。
$('.a').on('click', function(){
$(this).addClass('c').removeClass('a');
});
添加类时。现在我想删除类'c'并添加类'a'。
$('body').on('click','.c', function(){
$(this).addClass('a').removeClass('c');
});
我试过这个。但不工作。
解决方案
问题是您将点击处理程序连接到.a
元素的代码将其直接连接到元素。稍后,当委托.c
事件发生时,两个处理程序都会运行。如果您在处理程序中放置断点,您可以看到这一点。在这里,由于您不能在 Stack Snippets 中设置断点,因此我添加了日志记录:
$('.a').on('click', function(){
console.log("Direct .a handler ran");
$(this).addClass('c').removeClass('a');
});
$('body').on('click','.c', function(){
console.log("Delegated .c handler ran");
$(this).addClass('a').removeClass('c');
});
.a {
color: blue;
font-weight: bold;
}
.c {
color: red;
font-weight: bold;
}
<button class="a">change class</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
.a
相反,对and使用委托处理程序.c
:
$(document.body).on('click', '.a', function(){
$(this).addClass('c').removeClass('a');
});
$(document.body).on('click', '.c', function(){
$(this).addClass('a').removeClass('c');
});
如果您在处理程序中放置断点,您可以看到这一点。在这里,由于您不能在 Stack Snippets 中设置断点,因此我添加了日志记录:
$(document.body).on('click', '.a', function(){
$(this).addClass('c').removeClass('a');
});
$(document.body).on('click', '.c', function(){
$(this).addClass('a').removeClass('c');
});
.a {
color: blue;
font-weight: bold;
}
.c {
color: red;
font-weight: bold;
}
<button class="a">change class</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
但请注意,如果您所做的只是切换事件连接代码运行时存在的元素上的类,您可以只使用toggleClass("a c")
.
推荐阅读
- c - 如何识别WindowProcedure中的AppendMenu MF_POPUP Menu?
- javascript - 如何在Javascript中添加参数并删除以前的参数
- mysql - Mysql日期比较中的问题
- ruby - 如何使用 3 个或更多数组中的每个项目创建哈希
- laravel - 如何为 Laravel 网站配置 Nginx 以在带有 php8.0 的 Ubuntu Focal 服务器上使用 SSL 和 Let's Encrypt?
- router-outlet - 将 Angular 版本 8 更新到 11 后,应用程序未运行
- c++ - C++ 拥有作为指向另一个类的指针(或引用)并且可以处理 const 和非 const 情况的类成员的最佳方式
- python - 尝试使用函数(整数)更改变量
- python - 读取基于文本的(床)文件,将新列添加到它们保存在 csv 文件中
- java - 将 MouseListener 添加到 Netbeans TopComponent