灵感来自: jQuery match first letter in a string and wrap with span tag
我尝试跨越每个div分裂的第一个字符。 我有这个:
$(".split").each(function(index) {
$(this).html(function (i, html) {
console.log(html);
return html.replace(/^[^a-zA-Z'"<]*([a-zA-Z])/g, '<span class="big-cap">$1</span>');
});
});
它记录的内容如下:
<p>De laatste eeuwen veranderen letters meer in details en niet meer in drastische vorm, de Garamond is al meer dan 400 jaar oud en wordt nog steeds gebruikt dus je zou kunnen zeggen dat de lettervorm hoe die nu is min of meer af is.</p>
所以我认为<p>
是个问题。
那么我怎样才能超越第一段元素?
因此,如果我记录html
,则不会记录<p>
。
请记住,我只想跨越班级split
的每个div的第一个角色。
答案 0 :(得分:2)
似乎你想要包装一个没有子元素的元素的第一个字符:
$(".split").each(function(index) {
$(':not(:has(*))', this).html(function (i, html) {
return html.replace(/^[^a-zA-Z'"<]*([a-zA-Z])/g, '<span class="big-cap">$1</span>');
});
});
由于我不确定你的目标,如果你不想改变所有段落而只想改变第一段,也许你想要':not(:has(*)):eq(0)'
。
答案 1 :(得分:0)
您可以考虑使用jQuery text()而不是html来获取没有html的文本。
但是当添加span并替换元素的html时,<p>
将会消失。如果您负担不起,那么您的另一个选择是,如果只有一个p
,您可以使用.split
来审核$('p', '.split').each( ... )
元素中的<p>
{{1}}在里面。