用jQuery包装特定符号后的文本

我正在尝试做的是将文本包装到ll标签内的div中。 这不会是一个问题,但我需要包装特别是在“ – ”(减号)之后出现的文本,包括“减号”本身。

这是我的HTML:

  • Some list text - Additional text

因为我的结果我试图实现这个目标:

 
  • Some list text - Additional text

有人能帮我吗?

先感谢您。

这样的事情应该做到这一点。

 $('li').each(function() { $(this).html($(this).text().replace(/-.*$/, '$&')); }); 

看起来您正在尝试创建某种描述性列表而不是简单的无序列表。 如果你需要将所有文本保存在一个单独的元素中,我确信有人会发布一个不错的解决方案,但为什么不使用dl而不是像这样的ul

  
Some list text
- additional text

这应该达到与尝试使“ – ”符号出现在新行之后的文本相同的效果,并且您可以修改

元素上的填充和边距,以便它们排列在一起是你想要的样子。 如果要创建包含列表项(

)的描述性列表以及描述它们的其他子列表项(

),则最好在可访问性的语义中暗示使用其他方法逼近相同的事物。

编辑:在任何人说任何事情之前我都知道这个问题要求使用jQuery的解决方案,而且这个解决方案不使用jQuery。 但如果这里的意图是近似描述性列表,那么在HTML中语法编码比使用jQuery魔法更好。

听起来你正在走上正轨。 使span成为块级元素,如下所示:

 ... 

看看是否这样做。

哦,然后将内联样式移动到样式表:)

这将在每个列表项之前插入一个换行符。

 $(function(){ $("li").each(function(){ $(this).html($(this).html().replace(\-\, "
-")); }); });

下面这样的东西应该这样做,请注意这是在我的浏览器中进行干编码,因此需要进行测试。

 $('ul li').each(function() { var parts = $(this).html().split('-', 1); $(this).html(parts[0]); if (parts.length == 2) { $(this).append(" - " + parts[1]); } }); 
 $.each($("li:contains('-')"),function(i,n){ n.innerHTML = n.innerHTML.replace('-','-')+"" });