Javascript 如何隐藏类的所有元素?

Javascript 如何隐藏类的所有元素?,javascript,jquery,Javascript,Jquery,我发现这个函数: document.getElementsByClassName = function(c){ for(var i=0,a=[],o;o=document.body.getElementsByTagName('*')[i++];){ if(RegExp('\\b'+c+'\\b','gi').test(o.className)){ a.push(o); } } return a; } 如何按类隐藏

我发现这个函数:

document.getElementsByClassName = function(c){
    for(var i=0,a=[],o;o=document.body.getElementsByTagName('*')[i++];){
        if(RegExp('\\b'+c+'\\b','gi').test(o.className)){
            a.push(o);
        }
    }

    return a;
}
如何按类隐藏所有元素

我试过:

var array = document.getElementsByClassName("hide");

for(var i = 0; i < array.length; i++)
{
    $(array[i]).hide();
}

jQuery允许使用CSS选择器,不再需要手工构建循环和正则表达式。要使用fooey类隐藏元素,只需执行以下操作


如果您使用的是香草JavaScript,那么:

var array = document.getElementsByClassName("hide");

for(var i = 0; i < array.length; i++)
{
    array[i].style.display = 'none';
    array[i].onclick = function(){
        // do stuff
    };
    /* or:
    array[i].addEventListener('click',functionToCall);
    */
}
此外,鉴于您的评论:


因为我必须为每个元素添加事件单击

只需使用:

$(elementSelector).click(
    function(){
        // do stuff
    });
假设要隐藏并将单击事件绑定到相同的元素:

$('.hide').hide().click(
    function(){
        // do stuff
    });
从getElementsByClassName获得的不是数组,而是节点列表,因此在尝试循环时会出现错误

但是,您仍然可以使用以下命令在节点列表上循环:

var nodeList = document.getElementsByClassName("hide");
for(var x in nodeList){}

既然您正在使用jQuery,为什么不直接执行$'.classname.hide?因为我必须为每个元素添加事件单击。这似乎是为使用$.hide.hide可以完成的事情编写的很多东西。为什么要向隐藏的对象添加单击事件?然后只需执行$.hide.hide.on'click',函数{$This.show;};等等???如何使用第一个示例中的jQuery隐藏数组[I]?
$(elementSelector).click(
    function(){
        // do stuff
    });
$('.hide').hide().click(
    function(){
        // do stuff
    });
var nodeList = document.getElementsByClassName("hide");
for(var x in nodeList){}