如何在<h1>?</h1>中的第一个标记之前包装所有文本

时间:2014-09-11 10:11:15

标签: javascript jquery jquery-wrap

我在h1元素中包含文字内容,并且我希望将第一个br之前的所有内容包装到span

这是我的开始:

&#13;
&#13;
<h1 class="my-heading">lorem ipsum<br />dolor sit amet<br />lorem ipsum dolor<br />sit amet</h1>
&#13;
&#13;
&#13;

以下是我想结束的事情:

&#13;
&#13;
<h1 class="my-heading"><span class="my-wrapper">lorem ipsum</span><br />dolor sit amet<br />lorem ipsum dolor<br />sit amet</h1>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

一种方式是

var $heading = $('.my-heading'),
    $contents = $heading.contents(),
    index = $contents.index($heading.children('br').first());
$contents.slice(0, index).wrapAll('<span>');

演示:Fiddle


但是如果在br之前不存在任何其他元素(即你只需要包装第一个文本节点)那么

$($('.my-heading').prop('firstChild')).wrap('<span>')

演示:Fiddle

答案 1 :(得分:0)

从Arun P Johny建议的代码开始,我想出了这个,如果你的页面中有几个h1,它也会起作用:

jQuery('.my-heading').each(function (){
    jQuery(jQuery(this).prop('firstChild')).wrap('<span>');
});

对我而言。谢谢你帮助我!