如何在特定文本后面找到锚点

时间:2016-03-24 13:57:33

标签: jquery

我有以下HTML块。我想使用jQuery在文本“第二个链接之前的文本”之后找到锚点。锚可能是也可能不是最后一个,如本例所示,但它将始终紧跟在文本之后。

<div>
  Text before the first link 
  <a href="">First Link</a>
  Text before the second link 
  <a href="">I want to grab this link</a> <!-- I want to grab this anchor -->
</div>

2 个答案:

答案 0 :(得分:2)

您可以使用contents()查找具有给定文本内容的textnode。在那里,您可以使用nextSibling获取a。试试这个:

var node = $('div').contents().filter(function() {
    return this.nodeType == 3 && this.nodeValue.trim() == 'Text before the second link';
}).get(0);
var $a = $(node.nextSibling);
// do something with $a here...

Working example

答案 1 :(得分:2)

你可以这样做,

var elem = $();
$("div").contents().each(function(){
  if(this.nodeType == 3 && this.nodeValue.trim() == "Text before the second link"){
    elem = elem.add(this.nextElementSibling);
  }
});

elem.css("color","red");

使用.contents()接收div内的内容。内容包括元素节点,注释节点和文本节点。因此,文本节点的节点类型为3。根据节点类型和文本值检查单个内容,并将其添加到空的jquery对象。

DEMO