0

JQueryライブラリで使用する文字カウンターを作成して、Twitterカウンターと同様の効果を実現しました(残りの文字はカウンターに残っています)。しかし、少なくともFireFoxはそれを処理するのに苦労していることに気づきました(他のブラウザは多少の負担を示しますが、それほど悪くはありません)。基本的に、一定のペースで入力している間、「追いつき」を再生し始め、追いつくまでブラウザを応答しなくします。Twitterのテキストボックスで同じ入力速度を試してみると、速度が低下することはありません。

私はこのボックスを監視する自動サイズ変更プラグインを持っていますが、このコードだけが速度低下を引き起こしていることを見つけるために多くの削除と変更を試みました。ですから、ある時点でブラウザが処理するには数学が多すぎるかもしれないとは思いますが、これがどれほど単純であるかに問題がある理由はよくわかりませんし、解決策も考えられません。

/* Post Saying text count */
var postSayingLimit = 450;
$('span.counter').text(postSayingLimit);
$('#post-saying').bind('keyup keypress', function() {
    var postSayingUsed = $(this).val().length;
    if(postSayingUsed >= postSayingLimit - postSayingLimit / 10) {
    $(this).parent().find('span.counter').addClass('counter-limit');
    } else {
    $(this).parent().find('span.counter').removeClass('counter-limit');
    }
    var postSayingCount = postSayingLimit - postSayingUsed;
    $(this).parent().find('span.counter').text(postSayingCount);
});

条件付きを削除し、1つのバインディングに移動し、それを使用してハード値を挿入して、ラグを継続しようとしました。たぶん、いくつかの変数をバインド関数から移動しますか?実際のカウンタープロセスも関数にしますか?

4

2 に答える 2

0

できるだけ多くの要素を移動して見つけ出し、必要な場合にのみクラスの削除を実行する必要があります。(それが必要かどうかを判断する効率的な方法を理解する前に、繰り返しの検索をやめることを試みる価値があります。)

于 2011-09-09T09:52:17.017 に答える
0

ここで例を示しました:http://jsfiddle.net/zpjc6/

私のために速く動作します(しかしクロム)。また、スパンを変数に保存することで、マイナーな改善を行いました。そうすることは良い習慣ですが、それほど高くはないはずです。しかし、多分それは役に立ちます。

編集:多分あなたはあなたの実際のサイトにリンクすることができますか?

于 2011-09-09T09:58:02.213 に答える