每个条目的jQuery字数

时间:2012-05-25 15:40:10

标签: jquery count

我正在开发一个博客主题,每个帖子的每个条目都有一个字数。我可以让单词计数工作,但它只适用于第一个条目,然后显示每个帖子的相同计数。我需要修改下面的脚本以找到最接近的div.entrycontent并计算其中的单词,但是对于每个条目。下面是我的入门标记代码,如果有人可以提供帮助,我们将不胜感激。

<div class="entry">
    <div class="entryinfo">
        <script type="text/javascript">
            var text = $('.entrycontent').text();
            var wordCount = text.split(' ').length;
            $("span.words").text(wordCount + ' words');
        </script>
        <span class="words"></span>
    </div>
    <div class="entrycontent">
        Lorem ipsum dolor amet...
    </div>
</div>

3 个答案:

答案 0 :(得分:2)

您需要使用.each()进行循环。

将此脚本放在页面上,位于$(document).ready(function(){...});块的底部或顶部:

$('.entry').each(function(i,el) {
    var $entry = $(this),
        text = $entry.find('.entrycontent').text(),
        wordCount = text.split(' ').length;
    $entry.find("span.words").text(wordCount + ' words');
    $entry.find("span.chars").text(charCount); // IDs must be unique, use classes instead
});

<强>更新

$entry.find('.entrycontent').text()包含大量空格时,它会分割每个空格字符,无论它是否分隔单词。试试这个:

$('.entry').each(function(i,el) {
    var $entry = $(this),
        text = $entry.find('.entrycontent').text(),
        wordCount = text.split(/\s+/).length;
    $entry.find("span.words").text(wordCount + ' words');
});

.split() docs

更新2

好吧,如果你想要一个真实的字数,我想我们应该使用.match()而不是.split()

$('.entry').each(function(i,el) {
    var $entry = $(this),
        text = $entry.find('.entrycontent').text(),
        marr = text.match(/\w+/g) || [],  // null if no matches
        wordCount = marr.length;
    $entry.find("span.words").text(wordCount + ' words');
});

答案 1 :(得分:0)

$('.entry').each(function() {
 var text = $(".entrycontent", this).text(),
     wordCount = text.split(/\s+/).length;
 $("span.words", this).text(wordCount + ' words');
 $("span#chars", this).text(charCount);
})

答案 2 :(得分:0)

它可能与你的选择器绑定到任何具有一类entrycontent的元素有关。

我建议像这样迭代每个条目:

$(".entrycontent").each(function() {
    var entryInfo = $(this).prev();
    var text = $(this).text(); 
    var wordCount = text.split(' ').length;  
    entryInfo.find("span.words").text(wordCount + ' words');  
});