2014-10-17 119 views
0

找到所有的单词并替换 - 但只包含不包含在链接中的单词。javascript/jQuery找到所有字符串并替换 - 但是

<div class="test"> 

<br /> 
<a href="#">TEST</a> 
<br /> 
TEST 
</div> 

<div class="test"> 

<br /> 
<a href="#">TEST</a> 
<br /> 
TEST 
</div> 

查找所有“测试”仅在链接中不存在。

+4

您需要使用'内容()取决于空白',以避免过滤DOM文本节点。打赌你阿伦P Johny很快发布一个答案:) – 2014-10-17 11:22:14

+0

取而代之的是什么 – 2014-10-17 11:23:30

+0

固定*我*愚蠢的错误夫妇..工作版本下面。 – 2014-10-17 11:48:04

回答

0

可以使用contents()以避免过滤出DOM文本节点(其jQuery也默认情况下):

http://jsfiddle.net/TrueBlueAussie/Ln1Lvakc/7/

$('.test').contents().filter(function() { 
    return this.nodeType == 3 && $.trim(this.nodeValue) == "TEST"; 
}).replaceWith("hello!"); 

笔记:

  • nodeType 3是一个文本节点
  • $.trim是一个方便的jQuery静态方法来修剪字符串(因为不是所有的浏览器都.trim对字符串)
  • 在你实际上并不需要修剪这种特殊情况下,但它在HTML