2011-03-13 27 views
1

我有一個HTML文件,裏面有一些文字(如'bla-bla')。我想在這個文本節點之後獲得一個特定元素(如<a href=...)。如何在javascript中查找一些文本之後的元素?

我該如何用純JavaScript或jQuery來做到這一點?

例如HTML:

<div> 
    jdlgjalfad dfaldfdalf bla-bla fdfadf afd <br/> 
    <table>... 
    <td></td> 
    </table> 
    <a href="some_link">here</a> 
</div> 
+2

請張貼您的HTML片段。當你非常特殊時,很難發佈一個很好的答案。 – 2011-03-13 18:17:47

+0

哪個*特定*節點?只是下一個節點?沒有提供適當的例子,你想要*特定的*。 – 2011-03-13 18:39:45

+0

請你看看我的例子 – vinnitu 2011-03-13 19:07:47

回答

0

您可以使用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)); 
}); 
0
$('div:contains('bla-bla')).find('a') 

會在你的榜樣工作,但可能不適合您的實際使用情況的工作。的:包含選擇會發現它的一些字符串一個div,但您可能需要使用正則表達式來找到你想要的特定文字,如果你需要更多的上下文:

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

與一個或更換doSomethingHere()更多的jquery方法。適當的選擇將取決於您的具體使用情況。

相關問題