Ваши обработчики событий теряются при замене содержимого. Когда вы устанавливаете события hover
, jQuery устанавливает их в событиях на странице в настоящее время. Поэтому, когда вы заменяете их на ajax, события не связаны с этими элементами, потому что они новы.
Чтобы исправить это, вы можете либо вызвать функцию, которая их связывает, либо вместо этого вы можете установить обработчик событий документ, как в этом ответе , используя $ (document) .on
Таким образом, событие устанавливается в документе, и любые новые элементы получат вызванное событие.
Вот код perl. Подсчет слов может быть несколько субъективным, но я просто говорю, что любая строка символов не является пробелом.
open(FILE, "<file.txt") or die "Could not open file: $!";
my ($lines, $words, $chars) = (0,0,0);
while (<FILE>) {
$lines++;
$chars += length($_);
$words += scalar(split(/\s+/, $_));
}
print("lines=$lines words=$words chars=$chars\n");
Вариант ответа bmdhacks, который, вероятно, даст лучшие результаты, заключается в использовании \ s + (или даже лучше \ W +) в качестве разделителя. Рассмотрим строку «Быстрая коричневая лиса» (дополнительные пробелы, если это не очевидно). Использование разделителя из одного символа пробела даст количество слов шесть, а не четыре. Итак, попробуйте:
open(FILE, "<file.txt") or die "Could not open file: $!";
my ($lines, $words, $chars) = (0,0,0);
while (<FILE>) {
$lines++;
$chars += length($_);
$words += scalar(split(/\W+/, $_));
}
print("lines=$lines words=$words chars=$chars\n");
Использование \ W + в качестве разделителя остановит пунктуацию (среди прочего) в качестве слов.
Инструмент подсчета слов подсчитывает символы, слова и строки в текстовых файлах
There is the Perl Power Tools project whose goal is to reconstruct all the Unix bin utilities, primarily for those on operating systems deprived of Unix. Yes, they did wc. The implementation is overkill, but it is POSIX compliant.
It gets a little ridiculous when you look at the GNU compliant implementation of true.
Reading the file in fixed-size chunks may be more efficient than reading line-by-line. The wc
binary does this.
#!/usr/bin/env perl
use constant BLOCK_SIZE => 16384;
for my $file (@ARGV) {
open my $fh, '<', $file or do {
warn "couldn't open $file: $!\n";
continue;
};
my ($chars, $words, $lines) = (0, 0, 0);
my ($new_word, $new_line);
while ((my $size = sysread $fh, local $_, BLOCK_SIZE) > 0) {
$chars += $size;
$words += /\s+/g;
$words-- if $new_word && /\A\s/;
$lines += () = /\n/g;
$new_word = /\s\Z/;
$new_line = /\n\Z/;
}
$lines-- if $new_line;
print "\t$lines\t$words\t$chars\t$file\n";
}
Чтобы иметь возможность считать CHARS, а не байты, рассмотрим следующее:
(Попробуйте это с китайскими или кириллическими буквами и файлом, сохраненным в utf8)
use utf8;
my $file='file.txt';
my $LAYER = ':encoding(UTF-8)';
open( my $fh, '<', $file )
|| die( "$file couldn't be opened: $!" );
binmode( $fh, $LAYER );
read $fh, my $txt, -s $file;
close $fh;
print length $txt,$/;
use bytes;
print length $txt,$/;
Я наткнулся на это, когда искал решение для подсчета символов. По общему признанию, я почти ничего не знаю о perl, поэтому некоторые из этих сведений могут быть не совсем правильными, но вот мои настройки решения newt.
Во-первых, в любом случае есть встроенная переменная количества строк, поэтому я просто использовал ее. Это, вероятно, немного более эффективно, я думаю. Как бы то ни было, количество символов включает символы новой строки, что, вероятно, не то, что вам нужно, поэтому я проглотил $_. Perl также жаловался на то, как выполняется split() (неявное разделение, см.: Почему Perl жалуется: «Использование неявного разделения на @_ устарело»? ), поэтому я подправил это. Мои входные файлы имеют кодировку UTF-8, поэтому я открыл их как таковые. Это, вероятно, помогает получить правильное количество символов во входном файле, содержащем символы, отличные от ASCII.
Вот код:
open(FILE, "<:encoding(UTF-8)", "file.txt") or die "Could not open file: $!";
my ($lines, $words, $chars) = (0,0,0);
my @wordcounter;
while (<FILE>) {
chomp($_);
$chars += length($_);
@wordcounter = split(/\W+/, $_);
$words += @wordcounter;
}
$lines = $.;
close FILE;
print "\nlines=$lines, words=$words, chars=$chars\n";