$('.option').click(function(){
$(this).addClass('selected');
});
$('.selected').click(function(){
$(this).removeClass('selected');
});
尝试删除选定的类时,我单击具有类(选定)的元素。如何删除类当我单击我想要删除的类
addClas工作,但删除没有。 :/
$('.option').click(function(){
$(this).addClass('selected');
});
$('.selected').click(function(){
$(this).removeClass('selected');
});
尝试删除选定的类时,我单击具有类(选定)的元素。如何删除类当我单击我想要删除的类
addClas工作,但删除没有。 :/
您的问题是您将事件附加到尚未准备好接收该事件的元素。您应该将事件附加到父元素,然后您可以筛选.selected
。这样,当你的可点击元素被添加时它并不重要,它可以工作。这被称为事件代表团。您正在将处理事件的任务委托给另一个元素。
您的JS:
$(document).on("click", ".selected", function() {
$(this).removeClass('selected');
});
$(document).on("click", ".option", function() {
$(this).addClass('selected');
});
如果您不需要在各个按钮不同的功能(我假设你会)你可以两者结合成这样:
$(document).on('click','.selected.option',(function() {
$(this).toggleClass('selected');
});
此外,当这样做,不要将其附加到树上太高的父级。您想将它附加到最近的可能父元素。我们不需要像document
这样的点击事件,因为明确哪些元素会获得此事件是个不错的主意。将它附加到document
将意味着任何具有.selected
级别的元素都将可点击并响应相同的代码。如果您想在不同的按钮中使用不同的功能,则不能,因为它们都响应与document
相同的代码。
谢谢,现在我终于明白了。 :D – user1804119
with'toggleClass'你不一定需要'.on()',你仍然可以使用'$('。option')。click(function(){$(this).toggleClass('selected') });'因为在这种情况下'.option'选择器不会改变(唯一的变化是是否存在'selected'类) – MikeM
@MikeM yes你是对的,不需要委托那种情况。如果在处理程序之后引入'.option'元素,则会出现异常。 –
您可以使用toggleClass
。
$('body').on('click', '.option', function() {
$(this).toggleClass('selected');
});
添加'.on()'代表团,这是最好的答案。 – DevlshOne
在目标选择器中删除'.selected',我的不好 –
$('.option').on('click', function(){
if(!$(this).hasClass("selected")) {
$(this).addClass('selected');
}
});
$('.selected').on('click', function(){
$(this).removeClass('selected');
});
但是,你会得到最好的使用切换类的方法!
您需要委派事件。 – pmandell