如何回忆以前删除的类

时间:2013-07-07 06:17:06

标签: jquery

以前使用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>

3 个答案:

答案 0 :(得分: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以外的所有类。

答案 1 :(得分:1)

为此,我创建了两个function的{​​{1}}和removeAllClass。删除所有addOldClass时,它会在名为class的属性中存储,以便我们可以在添加旧oldClass时使用它

试试这个:

class

答案 2 :(得分:0)

完全删除所有类的问题在于,很难找到要将类添加回以后的元素集。

这是一个问题类非常适合解决 - 因此我建议自动添加基于当前类名生成的新类名 - 而不是仅删除所有类,用这些新生成的类名替换它们。

例如,具有someclass类的每个元素现在都将具有had-someclass类。

以下是一些代码:

// replace all classes on all <div> elements with had-* classes instead
$('div').each(function() {
    // get the current classes
    var classes = this.className.split(/\s+/);
    for (var i=0; i<classes.length; i++) {
        // if it's not already a had-* class, make it one
        if (classes[i].substring(0, 4) != 'had-') {
            classes[i] = 'had-' + classes[i];
        }
    }
    // remove all classes, and add the had-* classes instead
    $(this).removeClass().addClass(classes.join(' '));
});

然后要添加选定的缺失类,您可以执行以下操作:

// find everything that used to have the 'someclass' class, and put it back
$('div.had-someclass').toggleClass('had-someclass someclass');

显示正在使用的小提琴在这里:http://jsfiddle.net/dy4rN/