1

私は自分が取り組んでいるアプリでいくつかのプロファイリングを行ってきましたが、qTipはそれを本当に遅くしています!私はこのプラグインが大好きですが、ドキュメントの準備にヒントを追加するには、ほぼ2秒かかります(ページに約300のヒント)。たくさんのヒントがあることは知っていますが、これをスピードアップするための明白な方法とそうでない方法はありますか?

私はここで2.0のデイリービルドを使用しています:

http://github.com/craga89/qtip

ヒントを追加するために使用している主な機能は次のとおりです。

var thingsToTip = $('.TipMe');
for (var currentItem, i = -1; currentItem = thingsToTip[++i]; ) {
    currentItem = $(currentItem);
    currentItem.qtip({
        style: {
            widget: false,
            classes: 'ui-tooltip-light' 
        },
        content: currentItem.attr('tooltip'),
        position: {

            at: 'bottomRight',
            my: 'topleft',
            adjust: {
                screen: 'flip',
                x: 0,
                y: 0
            }
        }
    });
}

今、私はクラスによる選択が最も効率的ではないことを知っています。しかし、私はそれをspan.TipMeに切り替えてみましたが、2069年から約10ミリ秒しか節約できなかったので、読みやすくするために元に戻しました。私はすでにそれを.eachの使用から従来のforループに切り替えました。これにより、約100ミリ秒節約できました。繰り返しますが、合計実行時間と比較してバケットが減少します。

私はdynaTraceを使用して遅い部分を追跡してきました。

機能全体の実行には2069年かかります。その1931年はqtip関数です。だから私はループとセレクターをスピードアップすることにあまり興味がありません。彼らは大丈夫です。実際のqtipingに費やす時間を削減する必要があります。

私が何をしようとしているのかが明確になっていることを願っています。

私はほとんど何でも試してみて、もっと効率的なツールチッププラグインがあればqTipを捨てても構わないと思っています!

4

2 に答える 2

4

他の人が言ったように、ホバリングするか、要件が何であれ、一度だけ取り付けてみてください。

$(".TipMe").live("mouseover", function () {
    var $this = $(this)
    if (!$this.data("toolTipAttached")) {
        $this.qtip({
            style: {
                widget: false,
                classes: 'ui-tooltip-light'
            },
            content: $this.attr('tooltip'),
            position: {

                at: 'bottomRight',
                my: 'topleft',
                adjust: {
                    screen: 'flip',
                    x: 0,
                    y: 0
                }
            }
        });

        $this.data("toolTipAttached", true);

        // the qtip handler for the event may not be called since we just added it, so you   
        // may have to trigger it manually the first time.
        $this.trigger("mouseover.qtip");
    }
});
于 2010-09-08T18:02:41.903 に答える
1

一度に追加しすぎているだけだと思います。

window.setTimeout();UI がハングアップしないように、一度に 1 つずつ読み込んでみることはできますか? それがうまくいくかどうかはわかりませんが。

または、ユーザーがすべてのフィールドを事前にロードするのではなく、フィールドにフォーカスがある場合にのみqTipを適用します...これは明らかにページを殺します。

ユーザーが実際に 300 個のヒントすべてを表示したいと思う可能性はどれくらいですか? それでも、あなたはそれらすべてをロードしています...

実際、なぜあなたはループしているのですか?これは同じことをしませんか?

    $('.TipMe').qtip({
        style: {
            widget: false,
            classes: 'ui-tooltip-light' 
        },
        content: this.attr('tooltip'),
        position: {

            at: 'bottomRight',
            my: 'topleft',
            adjust: {
                screen: 'flip',
                x: 0,
                y: 0
            }
        }
    });
于 2010-09-08T17:46:00.633 に答える