计算类中的特定字符(并将文本截断逻辑应用于该类的每个实例)

时间:2014-04-21 02:50:45

标签: javascript jquery html css

我有像

这样的HTML
<a href="/blabla" class="matchupLink">
    <span class="teams"> USA</span>
    <strong> -0 </strong>
    <span class="teams">Netherlands</span>
    <span class="pull-right dateOrScore"><strong>15 Jul</strong> : 3:00pm CST</span>
</a>

<a href="/blabla2" class="matchupLink">
    <span class="teams"> USA</span>
    <strong> -0 </strong>
    <span class="teams">Netherlands</span>
    <span class="pull-right dateOrScore"><strong>15 Jul</strong> : 3:00pm CST</span>
</a>

<a href="/blabla3" class="matchupLink">
    <span class="teams"> USA</span>
    <strong> -0 </strong>
    <span class="teams">Netherlands</span>
    <span class="pull-right dateOrScore"><strong>15 Jul</strong> : 3:00pm CST</span>
</a>

我想计算每个“matchupLink”类中的字符数,但不计算“dateOrScore”类中的字符数。

我的目标是在字符数超过20个字符时剪切文本并在字符20之后放置省略号,同时保留日期(dateOrScore)元素。

我试过像

这样的东西
$('.matchupLink .teams').each(function () {
  console.log($(this).html())
});

但是它会单独返回每个teams元素,不能真正使用省略逻辑。

有什么想法吗?

由于

Ps:我也试过删除所有文本,并排除'dateOrScore'(使用not()),但也失败了。

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

var ellipses = 20;

$('.matchupLink').children().not('.dateOrScore').each(function() {
    var text = $(this).text();
    if(text.length > ellipses)
        $(this).text(text.substr(0, ellipses) + '...');
});