javascript - n字+样式后单行文字如何拆分?

标签 javascript jquery html css

我有一行文本是帖子标题,它看起来像这样:

<h2 class="title">
  <a href="http://example.com">Report 10/2019 The name of the report</a>
</h2>

我希望能够:
a) 在年份后拆分链接标题的名称;
b) 以两种不同的方式分别为“Report 10/2019”和名称的其余部分设置样式(最好为每个部分或至少为第一部分添加一个类)。

我设法用这个分割文本:

var breakAt = 17;
var brokenString = $(".title a").html();
brokenString = brokenString.substring(0, breakAt) + "<br>" + brokenString.substring(breakAt);
$(".title a").html(brokenString);

但这会将名称除以字符数,而在 X 个空格后拆分(在本例中是在第二个空格后)会更安全 - 月数将是一个或两个字符。 并且不知道如何对标题链接的两个部分应用不同的样式。

最佳答案

循环遍历所有标题,获取它们的内容,应用正则表达式并将子字符串从开头到年份(4 位数字)包装到 span(或其他元素,如果您愿意)

然后将样式应用到 span(例如更粗的字体和 display: block),以便剩余部分在新行开始)

var titles = document.querySelectorAll('.title a');
[...titles].forEach((title) => {
   var content = title.textContent;
   content = content.replace(/(^.+?\d{4})/, '<span>$1</span>');
   title.innerHTML = content;
})
.title a {
  color: #333;
  font-weight: 400;
}
.title span {
  font-weight: 700;
  display: block;
}
<h2 class="title">
  <a href="http://example.com">Report 10/2019 The name of the report</a>
</h2>
<h2 class="title">
  <a href="http://example.com">Another Report 3 / 2019 The name of the report</a>
</h2>

关于javascript - n字+样式后单行文字如何拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57161067/

相关文章:

javascript - 暂停自动播放的 html 视频?

javascript - 从 Angular 12 更新到 13 时如何修复 'require() of ES Module not supported' 错误?

javascript - 使用 Google Protocol Buffer 在 C++ 和 JavaScript 端点之间序列化/反序列化数据?

jquery - 当鼠标悬停在其子元素上时,如何防止父元素的 mouseout 触发?

javascript - Jquery 切换文本按钮,内部带有 Bootstrap 图标

jquery - Bootstrap Navbar Fixed Top 之前的 <div> 是否可行?

html - CSS 在非 float div 容器中环绕图像的文本

javascript - 使用 AngularJS 和外部 NodeJS 服务器启用 html5 模式

jquery - 响应式/流体菱形网格

javascript - 动画边框