用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('-','-')+"" });