3

通話料が高いのはどっち?

  1. DOM ノードの表示と非表示または
  2. DOM ノードの作成と削除

操作する必要がある dom が 1 つだけ、またはいくつか (5 つ未満) のノードがあり、アプリケーションがデスクトップで実行されているとします。

少数の場合、それはまったく問題になりますか? モバイル アプリケーションの場合はどうですか。

4

1 に答える 1

4

この 2 つの違いは、ごく少数の要素については非常に小さいものであり、絶対に無視できると見なすことができます。

そうは言っても、jQuery.show().hide(). jQuery の.hide()要素を非表示にする他の方法よりもはるかに低速です。その理由を知りたい場合は、「なぜ.hide()遅いのか」をお読みください。私の答えの一番下のセクション。

とにかく、どの方法があなたのニーズに最も適しているかに基づいて決定する必要があります. 要素が二度と必要ない場合は、削除することもできます。しばらくの間や特定の条件下で非表示にしたくない場合は、表示/非表示にします。

しかし、自分でテストしたい場合は、ここに行きましょう:)


なぜ.hide()遅いのですか?

jQueryは、スタイルの以前の値をキャッシュすることを除い.hide()て、基本的には使用と同じです。そのため、 を呼び出すと、要素が元の状態とまったく同じに見えるように正しく戻されます。があった場合は、再表示されたときにそれが表示されます。それが持っていた場合、それは持っているでしょう。これはかなり便利です。.css('display','none') display.show()display:inlinedisplay:blockdisplay:block

次に例を示します。

id="myDiv" の div があり、外部ファイルでスタイル設定されているとしますdisplay:inline。それを隠したいのです。

ちなみに、次の.cssようにします。

$('#myDiv').css('display','none');

その後、仲間の開発者の 1 人が、特定の条件下でそれを再び表示したいと考えています。css はどこかの外部ファイルにあるため、プロパティがどうあるdisplayべきかわかりません。ほとんどの開発者のデフォルトはdisplay:block、次のようになります。

$('#myDiv').css('display','block');

ただし、この場合、元は だったので、まったく異なるスタイルになりinlineます。頭の良い開発者は、何がうまくいかなかったのかを理解するのに何の問題もありませんが、すべての開発者が頭が良いわけではありません :)

と を使用する.show().hide()、これは問題になりません。以前のスタイルは気にしません。私たちはそれを元の場所に戻したいだけであり、まさにそれができることです.

于 2012-08-22T18:40:56.420 に答える