字符计数器超级慢 - jQuery

时间:2010-06-29 21:18:18

标签: javascript jquery events

我写了这个:

$('[name=item-title]').live('keyup',function(k){
    char_limit=parseInt($('[data-charlimit]').attr('data-charlimit'));
    total = char_limit-parseInt($(this).val().length);
    $('.charcount span').text(char_limit-parseInt($(this).val().length));
});

但是在最初的几个单词之后,它开始变得非常缓慢,我会打字,然后单词会显示毫秒。如果我喜欢250个字,它似乎落后了近3/4秒。有什么想法吗?对我来说,我所写的内容似乎相当小......

2 个答案:

答案 0 :(得分:2)

  1. 如果可能,请预先计算char_limit。打字时不会改变。
  2. 使用第四行中的total变量,或完全省略其计算
  3. 忽略parseInt s,除了第一个,它们没用。
  4. 这会给你

    var char_limit=parseInt($('[data-charlimit]').attr('data-charlimit'));
    $('[name=item-title]').live('keyup',function(k){
        $('.charcount span').text(char_limit-$(this).val().length);
    });
    

    我不确定是否有多个char_limit,因为这会破坏那些。看来您当前的$('[data-charlimit]')方法无论如何都不允许这样做。

答案 1 :(得分:2)

你在每个角色进行一次DOM遍历,你不确定为什么它会变慢?

// calculate upper limit once -- it won't change, presumably
var char_limit=parseInt($('[data-charlimit]').attr('data-charlimit'));

$('[name=item-title]').live('keyup',function(k){
    // length is already numeric, no need to parse it
    var remaining = char_limit - $(this).val().length;
    $('.charcount span').text( remaining ); // use the result, note I renamed it
});