0

他の多くのもののためにjqueryをすでにロードしているページがあります(つまり、jqueryをロードするオーバーヘッドがすでに発生しています)。

それを念頭に置いて、要素を表示/非表示にする「正しい」方法があります-これらの2つの「より良い」または「より効率的な」のどちらかが他よりも優れていますか?

JavaScriptのみ:

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

JQUERY:

$jsjp('#stuff').css('display','block');

ありがとう!

4

3 に答える 3

1

Vanilla JavaScriptは常にjQueryよりも高速ですが、IDセレクターのjQueryはネイティブgetElementById関数を使用するため、2つの間に主な違いはなくshowhideメソッドを使用することもできます。

$jsjp('#stuff').hide()
于 2012-10-04T10:30:00.227 に答える
1

私は使用します$('#stuff').hide()| |$('#stuff').show()の代わりに$('#stuff').css('display','none');$('#stuff').css('display','block');

于 2012-10-04T10:30:51.990 に答える
1

Javascriptは、ほとんどの場合、jQueryよりも高速です。これは、jQueryが(一般的に)他の方法ではネイティブであった可能性のある呼び出しの少なくとも1つの追加レイヤーを導入するという事実のためです。

ただし、少なくとも質問のコンテキストでは、ネイティブJSで要素を非表示にする方法を検討してください。

foo.style.display = 'none';

jQueryと比較して:

foo.hide();

大きな違いはなく、文字数を除けば、実際には何もする必要はありません。

さて、それを逆にしましょう。foojQueryでどのように表示し直しますか?

foo.show();

と生のJSで:

foo.style.display = 'block';

終わり。あまり違いはありません。

それともありますか?少し考えてみてください。ここでの最初の問題は、最初に設定しているという仮定にどのように到達したかということですdisplay = 'block'fooブロック表示に設定する必要がありますか?inline代わりにすべきではありませんか?またはinline-block

ほとんどの場合、どちらを使用するかを決めることは何もできません。偶然に使用する場合は、確実に実行するためのバッキングコードを作成した可能性があります。

jQueryの実装の主な(見過ごされがちな)利点の1つはshowhideすべての追跡がサイレントに実行されることです。.hide()ブロック要素を呼び出した場合、それを呼び出すと.show()、jQueryはそれをブロックに戻しますが、他には何も戻しません。

質問を続けることにした場合は、これも考慮してください。

于 2012-10-04T10:39:40.610 に答える