【问题标题】:Execute a function after a test for character length在测试字符长度后执行函数
【发布时间】:2013-11-25 06:01:30
【问题描述】:

当文本长度达到 40 个字符时,我试图截断 div 中的文本量,并在截断后添加省略号。这是我的代码:

jQuery(document).ready(function($) {
$(".trim").text(function(index, text) {
return text.substr(0, 40)+' ...';
});
});

问题是即使字符长度小于 40 个字符也会添加省略号,即使文本没有被截断也会添加省略号。所以接下来我尝试了一个条件,仅当字符长度小于 40 个字符时才运行该函数,但无济于事:

jQuery(document).ready(function($) {
if($(".trim").length > 40) {
$(".trim").text(function(index, text) {
return text.substr(0, 40)+' ...';
});
}
});

有什么想法吗?

【问题讨论】:

  • 请格式化您的代码。

标签: jquery character-limit


【解决方案1】:

你快到了!您的条件不是检查 div 中文本的长度。您正在检查 jQuery 对象的 .length,它等于 1(选择器找到的元素数)。您需要检查div内实际文本的长度。去掉外面的if,把你传入.text()的函数里面的长度检查移到.text()

$(".trim").text(function(index, text) {
    var newText = text;

    if(text.length > 40) {
        newText = text.substr(0, 40) + "...";
    }

    return newText;
});

【讨论】:

  • 完美!谢谢,维文。现在是一个很棒的小脚本。
  • 其实,Vivin,我要截断的是一个包含链接的句子。当我使用这个脚本时,它会截断句子,但也会断开链接。关于如何避免这种情况的任何想法?我是否正确地计算了 html 中的字符而不是“输出”文本?
  • 你能用反引号再发一次吗?原始 HTML 被忽略,所以我看不到您要截断的内容。
  • 这是我试图截断的 html/php 行:<span><strong>Course: </strong><?php echo get_the_term_list( $post->ID, 'courses', '', ', ', '' ); ?></span> php 函数是一个 Wordpress 函数,它输出“课程”的名称。有时“课程”文本(课程名称)太长,所以我想将其保留为 40 个字符。这个 Wordpress php 函数将“课程”作为链接返回,这正是我所需要的。该脚本正在截断“课程”,但正在剥离链接。
  • 很简单——我只需添加另一个选择器$(".trim a") 来处理链接元素并解决问题。谢谢,维文。
猜你喜欢
  • 1970-01-01
  • 2023-02-07
  • 2020-11-30
  • 2018-05-01
  • 2016-05-03
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
相关资源
最近更新 更多