Jquery:IE8的第一线

时间:2011-11-18 11:14:30

标签: jquery

我需要将以下句子的第一行包装在内:

<span class="span">This is the first line <br> this should be the second line</span>
<span class="span">This is another first line <br> this should be another second line</span>

使用jquery:

$('.span:first-line').wrap('<em></em>');

我期待结果:

<span class="span"><em>This is the first line </em><br> this should be the second line</span>

CSS:

.span {
    display:block;
    white-space:pre;
}

但无论IE似乎都没有认出它。

循环每一个意外的结果:

$('.span:first-line').each(function() {
    $(this).wrap('<em></em>');
});

结果不佳:

<em><span class="span">.................</span></em>

同时

$('.span').each(function() {
    $(this).filter(':first-line').wrap('<em></em>');
});

有没有人知道用换行符(<br>)空格包围第一行的其他方法,以使其适用于IE8?

由于

2 个答案:

答案 0 :(得分:2)

试试这个:

$(".span").each(function(){
   var split = $(this).html().split(/<br.*?>/gi);
   split[0] = "<em>" + split[0] + "</em>";
   $(this).html(split.join("<br>"));
});

已更新为使用正则表达式而不是<br>现在也可以使用<br />进行拆分。

现场演示:http://jsfiddle.net/yZ2Se/1/

答案 1 :(得分:1)

var val = $('.span').eq(0).val();

var splitted = val.split('<br>');
var newtext = '<em>'+splitted +'</em><br></br>'+splitted[1];

$('.span').eq(0).html(newtext);