javascript - 删除jQuery函数中的类
问题描述
我遇到的问题是,如果我在单击删除按钮后立即单击结帐按钮,即使我已经拥有$(".blueClass").removeClass('classOne');
jquery 功能,它仍然会更改框的颜色。我想要完成的是,当我单击删除时,当我单击结帐时,所述框不应改变其颜色,除非我再次单击该框。完整的源代码在下面的链接中。
$( document ).ready(function() {
$(".boxes" ).click(function() {
$(this).addClass('classOne');
});
$(".btn-primary").click(function(){
$(".classOne").addClass('blueClass');
$(".classOne").append("<div class='wraps'><br><strong>Ordered</strong>");
$(".classOne").append("<br><button type='button' class='btn btn-info'>Remove</button></div>");
$(".blueClass").removeClass('classOne');
$(".btn-info").click(function(){
$(this).parent().removeClass('blueClass classOne').empty('');
});
});
});
.leftbox{
min-height: 100%;
}
.rightbox{
min-height: 100%;
}
.boxes{
border: 1px solid black;
border-radius: 10px;
min-height: 9em;
float: left;
margin: 1em 1em 1em 1em;
width: 100%;
}
.wrapper{
padding-top: 1em;
}
.btn-holder{
margin-top: 3em;
}
.redClass{
background-color: red;
}
.greenClass{
background-color: green;
}
.yellowClass{
background-color: yellow;
}
.blueClass{
background-color: blue;
}
.rightbox input{
width:50%;
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class=" col-md-3 text-center">
Item 11
<div class="boxes text-center">
</div>
</div>
<div class=" col-md-3 text-center">
Item 12
<div class="boxes text-center">
</div>
</div>
</div>
<button type="button" class="btn btn-primary">Checkout</button>
解决方案
当单击 a 时.btn-info
,将事件bubbles
传递给.boxes
元素,然后再次触发侦听器添加.classOne
:
$(".boxes" ).click(function() {
$(this).addClass('classOne');
})
你想停止这种冒泡,只需在点击监听器中添加event.stopPropagation :.btn-info
$(".btn-info").click(function(e){
e.stopPropagation();
$(this).parent()
.removeClass('blueClass classOne')
.empty('');
});
而且,顺便说一下,像@Ankit Agarwal.btn-primary
所述,将侦听器添加到单击回调之外的文档是一种更好的设计,因为您一次只会添加一个侦听器,而不是每次单击结帐按钮时。
编辑
我认为一个更合适的解决方案,如果你不想停止你的事件传播,这可能会给你带来麻烦,例如你想在整个文档上监听一些“一般点击”,你可以检查event.target.boxes
回调,并删除回调中的event.stopPropagation
部分.btn-info
:
$(".boxes").click(function(e) {
if(event.target === this)
$(this).addClass('classOne');
});
$(".btn-info").click(function(){
$(this).parent()
.removeClass('blueClass classOne')
.empty('');
});
推荐阅读
- sql-server - SQL Server 中是否有一种优雅的方法可以在另一个字符串中的任何位置插入一个字符串 - 包括结尾?
- ios - CocoaPods:如何将纯 swift 静态库预编译的二进制文件包装到 pod 中?
- linux - 大的发送套接字缓冲区大小导致 UDP 数据包丢失
- java - 从 Kotlin 理解这段代码
- firebase - Flutter中如何验证用户输入数据是否存在于Firestore文档中?
- apache-spark - 如何从 spark sql databricks 中的临时视图或等效视图中删除?
- animation - 如何使用 ArcHandles 和 Handles 旋转/移动包含 Motor6D 的对象?
- python - 为什么我在 Python3 中收到此错误:IndexError: list index out of range
- javascript - 更改 element.style.display ="none" 后如何保持相同的 d-grid 间隙
- algorithm - 区分负循环中的节点和负循环可达的节点