2017-07-29 70 views
0

我在我的jQuery上有點生疏(已經有幾年了!)我不得不假設這已被問了100次,但我沒有尋找正確的術語似乎。使用jQuery在任何子文本節點中查找匹配的文本?

我試圖抓住一個對象的所有後代文本節點,然後,如果存在與文本字符串的匹配,請對該對象執行某些操作。這也是爲什麼我現在有:

$(".my-item").each(function(){ 
    var content = $(this).find('*').text(); 
    if (content.indexOf('mySearchString'>0)){ 
     //do something 
    } 
}) 

我似乎無法得到這個發現所有文本,但是。只是直接的後代。樣本HTML:

<div class="my-item"> 
    this text is part of the var 'content' 
    <div> 
     this text is not 
    </div> 
</div> 

回答

0

你必須訪問每個節點的textContent,你可以在過濾器中直接完成,並返回匹配,或者如果你想與他們直接合作

使用常規 each
$(".my-item").each(function(){ 
    var $children = $(this).children(); 

    $children.contents().each(function(i,node){ 
     if (node.nodeType === 3 && node.textContent.indexOf('mySearchString') !== -1) { 
      //do something 
     } 
    }); 
}); 

FIDDLE

+0

這會不會只是搜索'。我-item'的兒童的深度?這裏遞歸的東西不是一個更好的解決方案嗎? – Pineda

+0

有沒有辦法做到這一點'集體'?換句話說,我很好地抓住了所有的文本節點,並把它們一起砸成一個大字符串。我不需要分別解析每一個。 –

+0

@Pineda - 這就是'children()'所做的事情,它會得到直接的孩子嗎? – adeneo