0

特定の(まだ特定ではない)クラスを要素から別のクラスに転送したいというこの問題があります。

これ:

<span>
   <span class="THIS-something-something anotherClass"></span>
</span>

の中へ:

<span class="THIS-something-something">
   <span class="anotherClass"></span>
</span>

基本的な考え方は、特定の単語「THIS」を持つ内部スパンにクラスを記述すると、外部スパンに転送されるということです(外部スパンは .wrap で生成されます)

「THIS」を含むクラスは、20 種類のバリエーション (THIS-something-something、THIS-something-anything、THIS-and-that .. など) を持つクラスであり、「anotherClass」は完全にランダムなクラスです。挿入したい数に応じて、それらも複数存在する可能性があります。

私はそれがどうなるかわかりません.. 私はこれについてすべて間違っていると考えているのでしょうか?

すべてのクラスが外側のスパンにコピーされ、内側のスパンからすべてのクラスが削除されるようにすることしかできません。 ..

4

2 に答える 2

1

これを試して:

$('span > span').each(function() {
    var all = $(this).attr('class').split(' ');
    for (var i = 0; i < all.length; ++i) {
        var cls = all[i];
        if (cls.indexOf('THIS-') == 0) {
            $(this).parent().addClass(cls);
            $(this).removeClass(cls);
        }
    }
});

これには、処理の順序に関連する問題がある可能性があるため、セレクターが別のスパン内にスパンを必要とする理由です。

于 2011-04-20T07:18:50.047 に答える
1
$('span[class|="THIS"]').removeClass(function (index, class) {
    var thisclass=class.match(/THIS-[^\s]+/g).join(' ');
    $(this).parent().addClass(thisclass);
    return thisclass;
});

今はテストできませんが、後で jsFiddle を投稿します。正規表現に取り組む必要があります。概要を説明したかっただけです。

.removeClass()ベースラインは、関数での使用法であり、 Attribute Contains Prefix Selector [name|="value"]です。

更新:コードを修正し、Demoを追加しました。THIS-このコードは、 on で始まるすべてのクラス名を取得spanし、それらを親に移動します (後で実行するwrap()か、私のセレクターを削除して、自分のセレクターを のように使用できます$(myselector).wrap(mystuff).removeClass(...);)。

于 2011-04-20T07:46:18.377 に答える