jQuery-无法删除类

jQuery-无法删除类,jquery,css,Jquery,Css,我似乎无法删除“foo”类,我不明白为什么。当用户单击.foo时,jQuery应该删除.foo。乍一看,它似乎是工作的文本不再是红色。但是,多次单击.foo将导致出现警告框,因此表示.foo尚未完全删除。我不明白为什么会这样 jQuery: $(document).ready(function() { $('.foo').click(function() { $(this).removeClass('foo'); alert('Class .foo sho

我似乎无法删除“foo”类,我不明白为什么。当用户单击.foo时,jQuery应该删除.foo。乍一看,它似乎是工作的文本不再是红色。但是,多次单击.foo将导致出现警告框,因此表示.foo尚未完全删除。我不明白为什么会这样

jQuery:

$(document).ready(function() {
    $('.foo').click(function() {
        $(this).removeClass('foo');
        alert('Class .foo should have been removed. Why is this alert still appearing?');
    });             
});​
html:


您需要解除单击侦听器的绑定


它工作得很好,听者仍然受到约束

当您运行
$('.foo')
时,您会得到一组静态元素,这些元素当时具有
class=“foo”
。因此,即使以后从这些元素中
removeClass('foo')
,仍然可以将侦听器绑定到原始元素集

如果您想改变这种行为,请考虑看<代码> .<代码> >或代码> .委托< /代码> ./p> 如果使用On(),它实际上会为每次单击选择选择器,因为事件绑定到主体,而不是“.fo”


铬合金对我来说很好。警报仍然出现,因为这是您在函数中告诉它的操作。onClick>removeClass>alert()是的,经过大量的澄清,我知道删除类不会删除附加到元素的侦听器。我想我的问题应该是“如何删除附加到元素的侦听器”。是否还有其他方法可以解除单击侦听器的绑定?我打算继续在.foo上使用click事件侦听器。@ICU222单击侦听器仅对当前元素解除绑定。它将继续在其他.foo元素上工作@你根本不需要解开它。该类在不解除绑定的情况下被删除,这是它应该做的。请参阅我答案中的JSFIDLE。@kdg123是的,但我需要在all.foo上使用单击侦听器elements@JeffFabiny谢谢你,杰夫。我来看看你的提琴。我不明白为什么警报仍然出现,即使该元素已从中删除.foo。根据我的理解,只有当用户单击.foo类时,才应该切换click()函数。如果删除了.foo,为什么警报仍然处于切换状态?@icu222侦听器仍然连接到元素!没课也没关系了。再也没课了。它可能没有那个类,但它仍然有绑定到它的侦听器。@kdg123啊,我明白了。我理解。我认为
.on
应该可以解决我的问题。@ICU222您的意思是想删除类和侦听器,但只删除这个元素?也就是说,单击.foo将删除该类和侦听器,但其他.foo元素将继续具有其侦听器?@JeffFabiny我想取消该元素上的类的关联,但保留侦听器。我的目标是,一旦类从这个.foo元素中删除,警报框就会停止出现
.on
解决了我的问题。谢谢。我将调查。关于和。代表。
<p class="foo">foo</p>​
.foo { color: red; }​
$(document).ready(function() {
    $('.foo').click(function() {
        $(this).removeClass('foo');
        alert( 'Class .foo should have been removed. Why is this alert still appearing?' );     
        $(this).unbind('click');        
    });             
});​
$(document).ready(function() {
    $("body").on("click", ".foo",function() {
        $(this).removeClass('foo');
        alert( 'Class .foo should have been removed. Why is this alert still appearing?' );       
    });             
});​