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}/)1 つの要素を持つ配列を返しています。

インデックスを指定する必要があります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 に答える