2012-12-03 3 views
45
document.getElementById("elementId").style.display="none" 

は、要素を非表示にするためにJavaScriptで使用されます。しかし、jQueryでは、同じ目的のためにjQueryでは、JavaScript style.display = "none"またはjQuery .hide()が効率的ですか?

$("#elementId").hide(); 

が使用されます。どちらの方が効率的ですか?私は2つのjQuery関数.hide().css("display","none")hereの比較を見てきました。

しかし、私の問題は、純粋なJavaScriptがjQueryよりも効率的かどうかです。

+0

[.hide()またはdisplay:noneの重複がありますか? jQuery](http://stackoverflow.com/questions/4396983/hide-or-display-none-jquery) –

答えて

82

document.getElementById('elemtId').style.display = 'none'; 

jQueryのはその.show().hide()方法で何が、それは要素の最後の状態を覚えていること、です。時には便利なこともありますが、ここでは重要ではない効率について質問して以来です。

+1

はいこれはより効率的ですが、これは安全ではありません。私の仕事では、非常に完全に設定可能な巨大なWebアプリケーションがあります。そのため、コンテキストや設定によっては、いくつかの項目がページ内にあるかもしれないし、そうでないかもしれません。 この要素がページに存在しない場合、これによりエラーが発生します(未定義オブジェクトの.styleを使用)。 JQueryを使用しても問題はありません。そうでない場合は、実行前に 'if(document.getElementById( 'elemtId'))'をチェックする必要があります。 – dominicbri7

+0

ここでベンチマークが可能ですか? :) – rogerdpack

8

はい。

はいです。

Vanilla JSは常に効率的です。効率の話

25

99.999999%の状況で効率性が問題になることはありません。読んだり保守したりするのが簡単なものは何でもしてください。

私のアプリでは、通常、隠して表示するためのクラスに頼っています。例えば、.addClass('isHidden')/.removeClass('isHidden')は、私が望むならCSS3でアニメートすることができます。より柔軟性があります。

あなた意見で
a(2); 
function a(nb) { 
    lot; 
    of = cross; 
    browser(); 
    return handling(nb); 
} 

+2

私はそれを言いません。コールの数によっては、毎回jQueryコンストラクタメソッドを呼び出すので、*が要素*になる可能性があります。 – jAndy

+1

これを1秒間に10000回以上実行すると目立つことがあります。私はそれを証明することができます:) –

+6

http://jsperf.com/jquery-hide-vs-native33 - 再度来てください.. – jAndy

22
a = 2; 

、何だと思います最速になるだろうか?

+2

これは私を笑わせてくれました。最高の答えです。素晴らしいものです。 –

+0

クールな説明。笑 – bot

+0

最善の説明ではなく、 'たくさんのメッセージ。 of = cross;ブラウザ();処理しています... '私は下線を与えません:P –

関連する問題