Javascript jQuery丢失了添加的类
我有几个按钮带有一个类Javascript jQuery丢失了添加的类,javascript,jquery,Javascript,Jquery,我有几个按钮带有一个类mybtn。我需要在点击的那个上设置一个类mybtn active,并将其从当前拥有它的类中删除 $('.mybtn').on('click', function () { $('.mybtn-active').removeClass('mybtn-active'); $(this).addClass('mybtn-active'); }); 当我点击一个按钮时,当前活动的类将丢失,这是应该的。但是点击的那一个没有得到这个类 我用Chrome调试器完成了脚
mybtn
。我需要在点击的那个上设置一个类mybtn active
,并将其从当前拥有它的类中删除
$('.mybtn').on('click', function () {
$('.mybtn-active').removeClass('mybtn-active');
$(this).addClass('mybtn-active');
});
当我点击一个按钮时,当前活动的类将丢失,这是应该的。但是点击的那一个没有得到这个类
我用Chrome调试器完成了脚本,它运行正常。当代码退出脚本时,它将丢失该类。有什么想法吗
[解决方案]作者@musefan
按钮是背景中的
标记,我没有想到这一点,因为这是我继承的代码,我没有编写HTML。这就是问题所在。查看已接受的答案。您缺少一个
在第二行的选择器中
应该是
$('.mybtn-active').removeClass('mybtn-active');
你错过了一次机会
在第二行的选择器中
应该是
$('.mybtn-active').removeClass('mybtn-active');
正如我在评论中提到的,这是打字错误。您必须将
$('mybtn-active')
更改为$('.mybtn-active')
。请看片段
$('.mybtn')。在('click',函数(){
$('.mybtn-active').removeClass('mybtn-active');
$(this.addClass('mybtn-active');
});代码>
.mybtn处于活动状态{
字体大小:25px;
}
按钮1
按钮2
按钮3
按钮4
正如我在评论中提到的,这是打字错误。您必须将$('mybtn-active')
更改为$('.mybtn-active')
。请看片段
$('.mybtn')。在('click',函数(){
$('.mybtn-active').removeClass('mybtn-active');
$(this.addClass('mybtn-active');
});代码>
.mybtn处于活动状态{
字体大小:25px;
}
按钮1
按钮2
按钮3
按钮4
假设
我将在这里进行一场大规模的赌博,但这是我能想到的唯一一件能够解释OP所描述的内容的事情,并且在代码中实际可能发生的事情。我们需要OP提供HTML来验证我的假设
我还假设示例代码中的类选择器是问题的输入错误,而在原始代码中不是问题(正如OP特别指出的那样,删除类是正确的)
此后,OP在对该答案和其他答案的评论中验证了我的假设
问题
我想您的问题是,您正在使用a
元素,而您的单击实际上是在重新加载页面,或者使用同样具有相同效果的按钮,从而导致所有类都恢复为默认值
解决方案
您可以使用click事件的参数修复此问题,如下所示:
$('.mybtn').on('click', function (e) {
e.preventDefault(); // This prevent the hyperlink from reloading the page.
$('.mybtn-active').removeClass('mybtn-active');
$(this).addClass('mybtn-active');
});
假设
我将在这里进行一场大规模的赌博,但这是我能想到的唯一一件能够解释OP所描述的内容的事情,并且在代码中实际可能发生的事情。我们需要OP提供HTML来验证我的假设
我还假设示例代码中的类选择器是问题的输入错误,而在原始代码中不是问题(正如OP特别指出的那样,删除类是正确的)
此后,OP在对该答案和其他答案的评论中验证了我的假设
问题
我想您的问题是,您正在使用a
元素,而您的单击实际上是在重新加载页面,或者使用同样具有相同效果的按钮,从而导致所有类都恢复为默认值
解决方案
您可以使用click事件的参数修复此问题,如下所示:
$('.mybtn').on('click', function (e) {
e.preventDefault(); // This prevent the hyperlink from reloading the page.
$('.mybtn-active').removeClass('mybtn-active');
$(this).addClass('mybtn-active');
});
$('mybtn-active')
不会选择类mybtn-active
的任何元素。$('mybtn-active')
应该是$('.mybtn-active')
“当代码退出脚本时,它只会丢失类。有什么想法吗?”-类本身不会“丢失”。。。您的代码片段不足以重现问题,请阅读。它运行良好@010Pixel:这是一个可怕的建议。你为什么要那样做?只是增加了复杂性和额外的性能开销,只是为了把它放在一行??如果您不喜欢多行,只需删除换行符,无需在过程中使代码变得更糟。$('mybtn-active')
不会选择类mybtn-active的任何元素。$('mybtn-active')
应该是$('mybtn-active')
“当代码退出脚本时,它会丢失类。有什么想法吗?”-类不会“丢失”你的代码片段本身不足以重现问题,所以请阅读。它运行良好@010Pixel:这是一个可怕的建议。你为什么要这样做?只是为了把它放在一行上而增加了复杂性和额外的性能开销??如果你不喜欢多行,只需删除换行符,就不需要让代码为或者在这个过程中,可能是这样,但是OP说那个部分在工作…是把类添加到这个中被认为是不起作用的。所以如果OP说的是正确的,那么可能只是问题中的一个输入错误。可能,但是OP说那个部分在工作…是把类添加到这个中被认为是不起作用的工作。如果OP所说的是正确的,那么可能只是问题中的一个输入错误。是的,但这不是OP所描述的问题。他们清楚地说删除类的部分工作正常,所以肯定只是问题中的一个输入错误。OP说问题在于将类应用到单击的元素。@musefan据了解,snippet应用类工作正常。是的,但问题不仅仅是一段代码,它也是问题的描述。很明显,OP需要提供更多信息,但我的观点是,您的答案并不能解决所描述的问题