jQuery插件“readmore”,修剪文本而不切割单词

时间:2011-04-30 00:19:21

标签: javascript jquery substring trim

我正在使用http://rockycode.com/blog/jquery-plugin-readmore/修剪长文本,并添加“查看更多”链接以显示所有文字。

我希望避免削减言语,我怎么能这样做?

如果限制为35,请不要削减w ...

如果限制为35,请不要删除单词...(在这种情况下,将其修剪为38,然后显示隐藏的文本,从第39个结尾处开始。

3 个答案:

答案 0 :(得分:7)

而不是这样做:

$elem.readmore({
  substr_len: 35
});

你可以这样做

$elem.readmore({
  substr_len: $elem.text().substr(0, 35).lastIndexOf(" ")
});

我们正在做的是去索引35之前的最新空间。 当然35可以变化。你也可以把它放到一个函数中重用它。

希望这有帮助

答案 1 :(得分:3)

您可以按如下方式更改该插件中的abridge功能:

function abridge(elem) {
  var opts = elem.data("opts");
  var txt = elem.html();
  var len = opts.substr_len;
  var dots = "<span>" + opts.ellipses + "</span>";
  var charAtLen = txt.substr(len, 1);
  while (len < txt.length && !/\s/.test(charAtLen)) {
      len++;
      charAtLen = txt.substr(len, 1);
  }
  var shown = txt.substring(0, len) + dots;
  var hidden = '<span class="hidden" style="display:none;">' + txt.substring(len, txt.length) + '</span>';
  elem.html(shown + hidden);
}

......它会按照你的意愿行事。你可能想要添加一个选项来关闭和打开此功能,但我会把它留给你。

See working example →

答案 2 :(得分:1)

我刚收集了有关此主题的信息,在您的帮助和我写的其他相关帖子的帮助下:

http://jsfiddle.net/KHd6J/526/