【发布时间】:2018-04-26 14:53:38
【问题描述】:
我正在尝试使用以下方法将 fubar 的所有实例包含在具有跨度的任何标题中:
jQuery('h1, h2, h3, h4, h5, h6').each(function(){
var located = jQuery(this).text().replace(/fubar/g,"<span class='myspan'>fubar</span>");
jQuery(this).html(located);
});
如果文本直接在 H 标记内,这可以正常工作,例如
<h1>this is fubar</h1>
但是,如果文本包含在 a 标记内,则 a 标记将被去除,例如
<h1><a href="#">this is fubar</a></h1>
变成:
<h1>this is <span class="myclass">fubar</span></h1>
如何保留a 标签和/或其他包装元素?
编辑
有时,'fubar' 也可能在 href 属性中。这显然不应该被替换。例如
<h1><a href="#/this-is-fubar">this is fubar</a></h1>
【问题讨论】:
-
你不能用
.html()代替.text()吗? -
@Huangism 有时 'fubar' 也可能在 a href 属性中。
-
我确信有一种方法可以使用 js 抓取标签之间的所有内容
标签: javascript jquery html