【发布时间】:2026-02-15 08:55:01
【问题描述】:
我之前问过一个类似的问题,但没有提供足够的背景信息。结果,我收到了一个出色的、技术上正确的答案,但并没有解决我的问题。
我也在 Stack 上环顾四周,但对 jQuery 的了解还不够,无法找到我的答案。
我需要用 jQuery 截断多行文本。当浏览器窗口扩展和收缩时,代码也需要添加/删除文本。因此,根据我的最低理解,代码需要在截断之前存储文本,以便在浏览器窗口展开时可以添加文本。
最初这段代码解决了我的问题:
$(function () {
var initial = $('.js-text').text();
$('.js-text').text(initial);
while($('.js-text').outerHeight() > $('.js-text-truncator').height()) {
$('.js-text').text(function(index, text) {
return text.replace(/\W*\s(\S)*$/, '...');
});
}
$(window).resize(function() {
$('.js-text').text(initial);
while($('.js-text').outerHeight() > $('.js-text-truncator').height()) {
$('.js-text').text(function(index, text) {
return text.replace(/\W*\s(\S)*$/, '...');
});
}
});
});
当我在一个页面上多次使用这些 .js 类时,此代码不再剪切它所有文本存储在一起,然后在使用这些类时吐出。 p>
这是该问题的 jsFiddle:
我需要单独存储每个 .js-text 文本,以便我可以在一个大型项目中使用这个 jQuery sn-p,并且如果用户要扩展他们的浏览器窗口大小,我可以将所有截断文本实例反馈到 DOM .
这可能吗?如果是这样,我该怎么做?
提前感谢您解决我的问题。我希望我在寻找的内容上已经足够具体了。
【问题讨论】:
-
不幸的是,我没有时间弄清楚,但我认为您根本不需要 JS 来做到这一点。这可以使用
text-overflow进行纯 CSS 管理。看看这里,例如:css-tricks.com/line-clampin. -
我建议使用一个已经做到这一点的插件。我已经成功使用dotdotdot
-
@Quentin 感谢您提供此选项。我会仔细看看的。如果可能的话,我非常想用我的 jQuery sn-p 的变体来解决这个问题。
-
我完全同意昆汀的观点。如果你这样做只是为了教育目的,我想你可以用 javascript 来做,但是几行 CSS 应该是显而易见的选择。
-
@Daniel B 干杯——我理解在这种情况下 CSS 优于 JS 的好处。但是现在我已经走了 JS 路线,我决心无论如何都要找到答案。
标签: javascript jquery html css truncation