0
<span class="locationtitle">
    <a href="#">Test Text</a><br>
    6:00 p.m. - 12:00 a.m.<br>
    Repeat on the first Thursday
</span>

我正在尝试用 jQuery 想出一种方法来删除最后一句话。所以第二次之后的一切<br>。那句话中的文字可能是任何东西,所以这样做是find()行不通的。

4

2 回答 2

6

你可以这样做:

$('.locationtitle').html(function(_,html) { 
    return html.split(/<br\s*\/?>/i).slice(0,-1).join('<br>')
});

这支持其他编写方法<br>,例如<BR/>,您可以使用 

一些解释:

  • jQuery 的html回调有两个参数,我不需要第一个(索引)
  • split使用<br>(或其变体)作为分隔符从字符串创建数组
  • slice返回没有最后一个元素的数组副本
  • join从数组中返回一个字符串,插入所需的<br>
于 2013-05-06T18:11:42.863 回答
2

假设最后一句不包含任何 HTML,香草 JS 和 jQuery 的混合在这里可能效果最好:

var s = $('.locationtitle')[0].childNodes; // HTML and text nodes
var last = s[s.length-1];                  // selects the last node
$(last).wrap('<span>').parent().hide();    // can only hide HTML elements

http://jsfiddle.net/mblase75/NXZpL/

于 2013-05-06T18:16:01.090 回答