我需要用空格替换所有<br />
。下面是动态吐出的字符串,我需要隐藏br标签...
M,W,Th,F 7:30 AM - 4:00 PM<br />Tu 7:30 AM - 6:00 PM<br />
我做错了什么?是否可以用逗号替换所有其他br标签,除了最后一个,将用空格重新标记
$('.WorkingHours').text().replace(/<br />/g, " ");
答案 0 :(得分:5)
您的代码有三个问题:
$('.WorkingHours').text()
不包含任何HTML(因此也没有br
标记),它只返回元素的文本内容。
$('.WorkingHours').text()
返回:
M,W,Th,F 7:30 AM - 4:00 PMTu 7:30 AM - 6:00 PM
而$('.WorkingHours').html()
返回:
M,W,Th,F 7:30 AM - 4:00 PM<br>Tu 7:30 AM - 6:00 PM<br>
您必须在表达式中转义内部反斜杠。 修改:查看.html()
的输出,它实际上不包含<br />
,但<br>
。这可能取决于文档的文档类型(not working example,working example)。
您必须将值分配回元素。
你可以做到
$('.WorkingHours').html(function(i, html) {
return html.replace(/<br\s*\/?>/g, " ");
});
但根本不使用正则表达式会更加清晰:
$('.WorkingHours').find('br').replaceWith(' ');
这将查找所有br
个元素节点,并将其替换为仅包含空格的文本节点。
更新(响应您的一条评论):如果您想用句号替换最后一个br
,可以使用.last()
:
$('.WorkingHours')
.find('br').last().replaceWith('.')
.end().replaceWith(' ');
答案 1 :(得分:1)
夫妻俩:
使用html()
获取节点的HTML:
var rawHTML = $('.WorkingHours').html();
使用\
转义正则表达式中的/
:
/<br \/>/g
将HTML设置为替换函数的返回值:
$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');
var rawHTML = $('.WorkingHours').html();
$('.WorkingHours').html(rawHTML.replace(/<br \/>/g, ' ');
答案 2 :(得分:0)
使用.text()
代替.html()
删除html代码
.text()
仅返回内部文本,而不是内部html。
答案 3 :(得分:0)
我认为你需要逃避表达式中的正斜杠,例如
$('.WorkingHours').text().replace(/<br \/>/g, " ");
答案 4 :(得分:0)