0
<span class="here one-two-del-del other1">test</span>
<span class="here one-two-aaa o2ther">test</span>
<span class="here one-two-dsf other3">test</span>
<span class="here one-two-213 o4ther">test</span>
<span class="here one-two-sdf other5">test</span>
<span class="here one-two-sdff o6ther">test</span>

<span class="set one-two-aaaa">set 1</span> <br />
<span class="set one-two-bb-fff">set 2</span> <br />
<span class="set one-two-vcvc">set 3</span> <br />
<span class="set one-two-fgdfg-dfgfd-fgf">set 4</span> <br />​

​$('.set').click(function(){
  $('#here').???
})​

私が望む-.setをクリックすると、これは独自のクラスを取得し、すべての.hereで置き換えます。

たとえば、セット 2をクリックすると、クラス .here を持つすべてのスパンが次のようになります。

​&lt;span class="here one-two-bb-fff other1">test</span>
<span class="here one-two-bb-fff o2ther">test</span>
<span class="here one-two-bb-fff other3">test</span>
<span class="here one-two-bb-fff o4ther">test</span>
<span class="here one-two-bb-fff other5">test</span>
<span class="here one-two-bb-fff o6ther">test</span>

現在のクラスがどのようになっているかわからないため、 removeClass を使用できません。.attr('class', 'new') を使用する場合、これはすべてのクラスを置き換えますが、クラス other1、o2ther などはまだ必要です

http://jsfiddle.net/NNhDd/

多分私は正規表現を使用する必要がありますか?

4

1 に答える 1

2

HTML

<span class="here one-two-del-del other1">test</span>
<span class="here one-two-aaa o2ther">test</span>
<span class="here one-two-dsf other3">test</span>
<span class="here one-two-213 o4ther">test</span>
<span class="here one-two-sdf other5">test</span>
<span class="here one-two-sdff o6ther">test</span>

<br />

<span class="set one-two-aaaa">set 1</span> <br />
<span class="set one-two-bb-fff">set 2</span> <br />
<span class="set one-two-vcvc">set 3</span> <br />
<span class="set one-two-fgdfg-dfgfd-fgf">set 4</span>

JavaScript

$('.set').click(function () {
    var replaceWith = $(this).attr('class');
    // Remove the "set " from replaceWith
    replaceWith = replaceWith.replace(/set ?/g, '');

    $('.here').each(function () {
        var newClass = $(this).attr('class');
        newClass = newClass.replace(/one-two-[^ $]+/, '');
        newClass = newClass + ' ' + replaceWith;
        // Now set the new class
        $(this).attr('class', newClass);
    });
})

ここにフィドルがあります:http://jsfiddle.net/NNhDd/3/

于 2012-07-25T08:31:39.600 に答える