2012-05-08 22 views
0

私はこの機能が見つかりました:クラスのすべての要素を非表示にするにはどうすればよいですか?

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(); 
} 

しかし、私はエラーを得た:

Could not convert JavaScript argument arg 0 [nsIDOMWindow.getComputedStyle] 
+6

あなたはちょうど '$行っていない理由のjQueryを、使用していると見て(非表示)。 '? – Bojangles

+0

各要素にイベント「クリック」を追加する必要があるためです。 – Never

+0

これは、 '$("。hide ")で行うことができる何かの書き込みのようです。 – adeneo

答えて

2

の操作を行います。あなたはjQueryのを使用していることを考えると、

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); 
    */ 
} 

をしかし、私はなぜ理解していませんあなた自身のために物事を複雑にしている、ちょうど使用:

$('.hide').hide(); 

をさらに上記、与えられたあなたのコメントに:

Because I must add event "click" for each element.

単に使用:あなたは非表示、および同じ要素にクリックイベントをバインドしたいと仮定すると、

$(elementSelector).click(
    function(){ 
     // do stuff 
    }); 

$('.hide').hide().click(
    function(){ 
     // do stuff 
    }); 
+0

jQuery Hideを配列[i]とどのように使用することができますか?(最初の例の場合)どうしたらいいですか? – Never

+1

なぜあなたはしたいですか? –

4

jQueryのCSSセレクタを離れ手作りループや正規表現の必要性とやって、使用することができます。クラスfooeyを持つ要素を非表示にするには、ちょうどあなたがバニラはJavaScriptを使用している場合は、その後、

$('.fooey').hide(); 
2

あなたがgetElementsByClassNameから何を得るが配列されていませんが、 a NodeListです。したがって、ループしようとするとエラーが発生します。

のNodeListを超えるしかし、あなたがすることができ、まだループ、以下のものを使用して:(「クラス名」)

var nodeList = document.getElementsByClassName("hide"); 
for(var x in nodeList){} 
関連する問題