从jQuery属性选择器的结果中删除由jQuery属性选择器定义的类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从jQuery属性选择器的结果中删除由jQuery属性选择器定义的类相关的知识,希望对你有一定的参考价值。

基本问题,我只想针对以指定字符串结尾的类的所有元素上以指定字符串结尾的所有类,并删除这些类。

此代码不起作用,但它接近我想要的:

$('[class$="_active"]').removeClass($('[class$="_active"]'))

$('[class $ =“_ active”]')返回一个jQuery.fn.init对象,我可以使用.each(index,item)来处理它。我认为它会像item.removeClass一样简单($('[class $ =“_ active”]'))但是下面的代码也不起作用:

$('[class$="_active"]').each(function(index,item){
        item.removeClass($('[class$="_active"]'))
})

removeClass函数不适用于我的每个函数中的项目。此时我正在考虑对每个项目进行字符串化,在“_active”之前找出文本,将其与字符串一起从“_active”中删除,然后返回重组后的结果。但这对于一个我认为有一个我忽略的基本答案的基本问题来说太复杂了。

答案

您可以使用attribute containing selectorattribute ends with selector来获取具有以_active结尾的特定类的所有元素。要首先删除类,必须使用String#match方法从类列表中提取特定类(仅当元素有多个类时才需要)。

$('[class$="_active"],[class*="_active "]').each(function(){
    $(this).removeClass($(this).attr('class').match(/S+_active/)[0])
    // or $(this).removeClass(this.className.match(/S+_active/)[0])
})
另一答案

一个可爱的解决方案

$('[class$="_active"]').each(function(i){$(this).removeClass(this.className)})

这是我的jsfiddle链接,看看https://jsfiddle.net/dupinderdhiman/mgzf2boL/7/

以上是关于从jQuery属性选择器的结果中删除由jQuery属性选择器定义的类的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DatePicker ui jquery 中删除时间

如何用jquery实现点击div更换class?

将jquery选择器的属性放入数组

JQuery 返回具有空属性选择器的非空输入

jquery选择器的总结

jQuery选择器的总结