0

我想type-one在添加新类之前删除匹配类type-two

HTML:

<div class="demo test">
    <span>One</span>
    <span>Two</span>
    <span>Three</span>
</div>

jQuery :

$(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());

})

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

我做错了什么?

演示:http: //jsfiddle.net/X5JxV/

4

2 回答 2

1

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
})
于 2013-01-29T10:02:57.497 回答
1

那这个呢:

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

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

于 2013-01-29T10:12:45.127 回答