向数组中的对象添加/删除类

时间:2013-11-30 23:25:26

标签: javascript jquery

为了确保我做对了......

myArray.removeClass('className');

将从添加到该数组的所有对象中删除名为“className”的类,是吗?

附录:

    <div id="parentEle">
        <div id="ele1"></div>
        <div id="ele2"></div>
    </div>

    #ele1 {
        //CSS
    }
    #ele1.className {
        //CSS
    }
    #ele2 {
        //CSS
    }
    #ele2.className {
        //CSS
    }

    var myArray = [];
    $('div','#parentEle').each(function() {
        myArray.push($(this)); 
    });

    // now to remove the class from both...

2 个答案:

答案 0 :(得分:1)

如果您使用JQuery的选择器,这将是您的数组(JSFiddle):

var myArray = $('span');
myArray.removeClass('active');

否则,你得到:

  

TypeError:Object [object Array]没有方法'removeClass'

但是,使用每个(JSFiddle):

var myArray = [$('span').first(), $('span').first(), $('span').first()]; // selecting first element 3 times

$.each(myArray, function () {
    this.removeClass();
});

您可以获得预期的结果。

更新(根据您的需求) - JSFiddle

$(function () { // execute when the page's loaded
    var myArray = $('#parentEle div'); // select all divs inside #parentEle element
    $.each(myArray, function () { // iterate over selected divs
        $(this).removeClass('className'); // remove class
    });
});

答案 1 :(得分:1)

我在问题中提出了含糊不清和缺乏明确性的建议:

var myArray = $('#parentEle div').map(function(){
    return this;
}).get();

$.each(myArray, function(i,e){
    $(e).removeClass('className');
});

加上HTML:

<div id="parentEle">
    <div id="ele1" class="className">ele1</div>
    <div id="ele2" class="className">ele2</div>
</div>

JS Fiddle demo

或者,在纯JavaScript中:

[].forEach.call(document.querySelectorAll('.className'), function(a){
    a.classList.remove('className');
});

JS Fiddle demo