如何用javascript找到一些文本后的元素?

我有一个HTML文件,里面有一些文字(比如'bla-bla' )。 我希望在此文本节点之后获得特定元素(如<a href=https://stackoverflow.com/questions/5291358/how-to-find-element-after-some-text-with-javascript/... )。

我怎么能用纯JavaScript或jQuery做到这一点?

示例HTML:

 
jdlgjalfad dfaldfdalf bla-bla fdfadf afd
...
here

您可以使用contains来查找包含所选文本的元素,然后遍历每个元素,使用基于搜索字符串的替换替换文本。 请注意,即使元素后代包含文本,contains也将返回匹配,因此如果您有嵌套元素或根据元素是否具有内部元素进行过滤,则应该指定一些元素类型。

 $('div:contains("bla-bla")').each( function() { var txt = $(this).text(); var insert = 'bla-bla(link)'; $(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(link)'; $(this).text( txt.replace( /bla-bla/g, insert ) ); }); 
 $('div:contains('bla-bla')).find('a') 

将在您的示例中工作,但可能不适用于您的实际用例。 :contains包含选择器会在其中找到包含某些字符串的div,但如果需要更多上下文,则可能需要使用正则表达式来查找所需的特定文本:

 $('div').each(function(){ if (/funky-regex/.test($(this).text())) { $(this).find('a').doSomethingHere(); } }); 

用一个或多个jquery方法替换doSomethingHere()。 适当的选择取决于您的具体用例。