3

jQueryを使用してステータスインジケーターを表示する方法を探していましたが、jQueryクックブックで解決策を見つけました。この解決策を示しました

(function($) {
    $(document).ready(function() {
       $('#ajaxStatus')
         .ajaxStart(function() {
            $(this).show();
        })
         .ajaxStop(function() {
            $(this).hide();
        });

        .....
  })(jQuery);

それからそれは警告しました、

アプリケーションでパフォーマンスの問題が発生した場合、要素の数が非常に多い場合、イベントの伝播のコストが原因である可能性があります。この場合、global を false に設定すると、パフォーマンスが向上する可能性があります。

したがって、まず上記のソリューションを使用する必要があります。サイトと js コードがどんどん大きくなるため、パフォーマンスの問題になりますか?

jQueryグローバルイベントを避けるべきですか?パラグラフにあるようにオフにするだけですか?

最後に、ajax リクエストの実行中に簡単なインジケーターを表示するにはどうすればよいですか?

4

1 に答える 1

9

正直なところ、この注意は有効だと思いますが、同時に時代遅れです。ここでjQueryソースを見てください:http: //github.com/jquery/jquery/blob/master/src/event.js#L290

これは、グローバルイベントが現在どのように処理されているかを示しています。

if ( jQuery.event.global[ type ] ) {
  jQuery.each( jQuery.cache, function() {
    if ( this.events && this.events[type] ) {
      jQuery.event.trigger( event, data, this.handle.elem );
    }
  });
}

以前次のようになりました。

jQuery("*").add([window, document]).trigger(type, data);

したがって、以前のようにすべての要素でトリガーされるわけではなく、多数の要素が非常に現実的な懸念を警告するようになりました。代わりに、登録された要素またはイベントをループし、登録されている要素がある場合にのみ、パフォーマンス大幅に向上します。今。


あなたの質問のために:

したがって、最初に上記のソリューションを使用する必要があります。サイトとjsコードがどんどん大きくなるにつれて、パフォーマンスの問題になりますか?

はい、上記の解決策は問題ありません。上記で概説したグローバルイベントの最適化の後、これが問題になるほど大きなページはまだ表示されていません。

jQueryグローバルイベントを避けるべきですか、段落が言うようにそれをオフにするだけですか?

いいえ、この変更が行われた後、段落がjQueryを使用していることはほとんど無視できます。

最後に、ajaxリクエストが実行されている間、どのように簡単なインジケーターを表示しますか?

あなたがあなたの質問に持っているのとまったく同じです:)

于 2010-07-02T02:44:20.370 に答える