我创建了一个用于 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);
});
我已经尝试删除条件,转到一个绑定,甚至插入硬值只是为了继续它的滞后。也许将一些变量移出绑定函数?将实际的计数器过程也变成一个函数?