2014-10-17 72 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