Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除与正则表达式匹配的类_Javascript_Jquery_Regex_Match - Fatal编程技术网

Javascript 删除与正则表达式匹配的类

Javascript 删除与正则表达式匹配的类,javascript,jquery,regex,match,Javascript,Jquery,Regex,Match,我想先删除匹配的类,如typeone,然后再添加新类,如typetwo HTML: <div class="demo test"> <span>One</span> <span>Two</span> <span>Three</span> </div> $(document).on("click" ,".demo > span", function(){

我想先删除匹配的类,如
typeone
,然后再添加新类,如
typetwo

HTML:

<div class="demo test">
    <span>One</span>
    <span>Two</span>
    <span>Three</span>
</div>
$(document).on("click" ,".demo > span", function(){
        $(this).addClass("active").siblings().removeClass("active");


        $(this).parents(".demo").removeClass(function(i, c){
            return c.match(/type-[a-z]{0,5}/);
        })

        $(this).parents(".demo").addClass("type-"+$(this).text().toLowerCase());

})
我的代码仍在添加,无法删除旧的匹配类

我做错了什么

演示:

c.match(/type-[a-z]{0,5}/)
正在返回一个包含一个元素的数组

您需要指定一个索引,即
c.match(/type-[a-z]{0,5}/)[0]
,但首先应该检查是否发生了匹配,否则将引发错误

$(this).parents(".demo").removeClass(function(i, c){
    var m = c.match(/type-[a-z]{0,5}/);
    return m ? m[0] : m
})
那么这个呢:

$(document).on("click" ,".demo > span", function(){
    $(this).addClass("active").siblings().removeClass("active");
    $(this).parents(".demo").removeClass().addClass("demo type-" + $(this).text().toLowerCase());
});

在这里,我们删除了所有类名,包括
demo
,然后用新的
类型xxx
类重新设置它。

这也是工作,但是在加载之前jQuery添加了很多类:D,无论如何谢谢:D