我的HTML文件里面有一些文字(如'bla-bla'
)。我希望在此文本节点之后获得特定元素(如<a href=...
)。
我怎么能用纯JavaScript或jQuery做到这一点?
示例HTML:
<div>
jdlgjalfad dfaldfdalf bla-bla fdfadf afd <br/>
<table>...
<td></td>
</table>
<a href="some_link">here</a>
</div>
答案 0 :(得分:0)
您可以使用contains查找包含所选文本的元素,然后对每个元素进行迭代,使用基于搜索字符串的替换替换文本。请注意,即使元素后代包含文本,contains也会返回匹配项,因此如果您有嵌套元素或者根据元素是否具有内部元素进行过滤,则应该指定一些元素类型。
$('div:contains("bla-bla")').each( function() {
var txt = $(this).text();
var insert = 'bla-bla<a href="...">(link)</a>';
$(this).text( txt.replace( /bla-bla/g, insert ) );
});
或
$(':contains("bla-bla")')
.filter( function() { return $(this).children().length == 0; } )
.each( function() {
var txt = $(this).text();
var insert = 'bla-bla<a href="...">(link)</a>';
$(this).text( txt.replace( /bla-bla/g, insert ) );
});
答案 1 :(得分:0)
$('div:contains('bla-bla')).find('a')
将在您的示例中起作用,但可能不适用于您的实际用例。 :contains包含选择器会在其中找到包含一些字符串的div,但如果需要更多上下文,则可能需要使用正则表达式来查找所需的特定文本:
$('div').each(function(){
if (/funky-regex/.test($(this).text())) {
$(this).find('a').doSomethingHere();
}
});
用一个或多个jquery方法替换doSomethingHere()。适当的选择取决于您的具体用例。