结合removeClass()和data()来记住哪些元素具有该类并将其恢复

时间:2013-08-12 19:21:57

标签: javascript jquery restore removeclass

所以我之前曾问过类似的问题,但几个小时后,当我尝试使用它时,我无法弄清楚如何使用它。我被告知如下:

$(element).removeClass('active');
$(element).data('removed-class', 'active');

此外,它可以使用

获取
var removeClass = $(element).data('removed-class');

那究竟什么是最“干净”的方式让它发挥作用?

所以基本上,如果我有7 <li>行,并且随机3 <li>的类都有“活动”。

现在,如果我执行一个函数来执行从<li>移除$("li").removeClass("active")的所有“活动”类,例如,我现在如何恢复相同的“活动”{{1}删除了类的类?

干杯

2 个答案:

答案 0 :(得分:1)

给它一个镜头,看看它是否符合要求。

var $listItems = $('li','#wrapper');

function clsToData (elements, cls) {
    $(elements).each(function(){
        var $this = $(this);
        if($this.hasClass(cls)){
            $this.removeClass(cls).data('removed-class',cls);
        }
    });
}

function restoreRemovedClasses (elements) {
    $(elements).each(function(){
        var $this = $(this);
        $this.addClass($this.data('removed-class'));
    });
}

$('button','#buttons').on('click',function(){
    var $this = $(this);
    switch ($this.attr('id')){
        case "button1":
            clsToData($listItems,'active');
            break;
        case "button2":
            restoreRemovedClasses ($listItems);
            break;
    }
});

http://jsfiddle.net/rA5aF/

答案 1 :(得分:0)

$("li").addClass($("li").data('removed-class'));

除非您应该定位适当的元素,而不是DOM中的每个li元素。