Счетчик персонажей Супер Медленный - jQuery - PullRequest
1 голос
/ 30 июня 2010

Я написал это:

$('[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 ]

2 голосов
/ 30 июня 2010

Вы делаете обход 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
});
2 голосов
/ 30 июня 2010
  1. Если возможно, пересчитать char_limit.Он не изменится во время набора.
  2. Используйте переменную total в четвертой строке или полностью пропустите ее вычисления
  3. Не указывайте parseInt s, за исключением, возможно, первогово-первых, они бесполезны.

Это дало бы вам

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]') не учитывает их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...