1

たとえば、jquery を使用して以前に削除されたいくつかの css クラス。

html

<div class="one someclass"></div>
<div class="two otherclass"></div>
<div class="one otherclass"></div>
<div class="two someclass"></div>

jquery

$('div').removeClass();

これにより、すべてのクラスが削除されます。

ここで、特定のクラスに対して以前に適用されたクラスをキャッチしたいと思います。

    $('div').addClass('someclass') 
      /* to which previously it was applied someclass in the above html
         that is add someclass to first class - one and last class -two*/
    $('div').addClass('otherclass') 
      /* to which previously it was applied otherclass in the above html
          that is add otherclass to first class - two and last class -one*/

編集

こうなってもどうしよう

<div class="one someclass"></div>
<div class="otherclass two"></div>
<div class="one otherclass"></div>
<div class="someclass one"></div>
4

3 に答える 3

2

削除する前に保存してください。

var classes = $("div")[0].className;

$('div').removeClass();

// ... Some Code Later

$('div').addClass(classes);

問題に一言一句対処すると、すべてのクラスを次のように保存できますsomeClass

function saveClasses(className) {
      return $(className)[0].className.split(/\s+/)
           .filter(function(c) { return c!=className; }).join(" ");
}

var classes = saveClasses(".someClass");

var $div = $('.someClass').removeClass();

// Some Code Later

$div.addClass(classes);

これにより、 を除くすべてのクラスが追加されますsomeClass

于 2013-07-07T06:20:30.950 に答える
1

これを行うために、2 つfunctionremoveAllClassとを作成しましaddOldClassた。古いものを追加しながら使用できるように、class呼び出された属性に格納されているものをすべて削除しますoldClassclass

これを試して:

function removeAllClass(selector) {
   selector = $(selector);
   selector.removeClass(function(el, cs) {
        $('.'  + cs.split(' ').join('.')).attr('oldClass', cs).removeClass(cs);
    });
}
function addOldClass(cs) {
    $('*[oldClass*=' + cs + ']').each(function(i, v) {
       var el = $(v);
       if ($.inArray(cs, $(v).attr('oldClass').split(' '))) {
           el.addClass(cs);
       }
    });
}

removeAllClass('div');
addOldClass('otherclass');
于 2013-07-07T07:18:15.290 に答える