5

私は比較的大きなDOMを使用しており、要素でイベントをトリガーすると、Chromeのパフォーマンスが大幅に低下することに気づきました。単一のイベント例:

myElem.trigger('myevent.myscope',arguments);

14msかかります!! (22.0.1229.92 m)

Firefox15.0.1とmsie9の同じイベントは、トリガーに1ms未満かかります。

要素はjqueryオブジェクトであり、キャッシュされているため、トリガーの前にDOMルックアップは実行されません。console.time()を使用しています

console.time('trigger');
myElem.trigger('myevent.myscope',arguments);
console.timeEnd('trigger');

誰かがこの状況に少し光を当てることができますか

ありがとう

ゲイリー

4

1 に答える 1

1

これはあなたの質問に対する直接の答えではありません。

しかし、カスタムイベントに関する私の経験では、トリガー/jqueryイベントの使用は避けます。

jQueryのバージョンによって異なります。トリガーがDOMツリーをバブルアップします。これには、かなり長い時間がかかる場合があります。

「jQuery1.3以降、.trigger()されたイベントはDOMツリーをバブルアップします。イベントハンドラーは、ハンドラーからfalseを返すか、イベントに渡されたイベントオブジェクトで.stopPropagation()メソッドを呼び出すことにより、バブル化を停止できます。」-引き金

私の個人的な解決策は、PeterHigginsPubsubを使用することです。

'上のjquerys'のパフォーマンスの違いを示すjsperfテストを作成しました(青はpubsub、赤はjquery、長い方が良い[1秒あたりの操作数]); PUBSUBとJquery http://jsperf.com/peter-higgins-pubsub-vs-tiny-pubsub

これからは、カスタムイベントを処理するときはpubsubを使用し、クリック、マウスオーバーなどのイベントを処理するときはjqueryを使用します。

ちょうど私の2セント。

于 2012-10-26T01:09:17.043 に答える