2010-02-11 39 views
21
<div> 
    <a> 
     Text1 
     <img alt="" stc="" /> 
    </a> 
    <a> 
     Text2 
    </a> 
</div> 

我想选择所有具有text=text2的锚元素。我在寻找这样的事情:获取jQuery中具有特定内部HTML值的所有链接

$('a[text=Text2]') 

编辑:为什么这是不工作?对于一些由于某些原因,它需要在以下格式:

$('div').find('a').find(':contains("Text2")') 

回答

36

你问为什么这不工作:

$('div').find('a').find(':contains("Text2")') 

的原因是,.find()将搜索子元素,你想.filter()(因为你已经选择a - 或者您将:contains添加到找到:

$('div').find('a').filter(':contains("Text2")'); 
$('div').find('a:contains("Text2")'); 
+0

忘记'.filter()'。谢谢。 – 2010-02-11 03:03:29

+0

我想知道为什么你没有将初始选择器更改为$('div a:contains(“Text2”)')而不是Find/Filter链? jQuery选择器像CSS选择器一样遍历子节点。 – 2010-02-11 14:28:07

+0

@kevin因为op中的注释:'由于某些原因需要采用这种格式' – gnarf 2010-02-11 16:07:18

6

您正在寻找contains

$("a:contains('text2')") 
+0

我更新了问题。 – 2010-02-11 02:46:36

2

作为附加的注释,而不是扫描可能会更好的链接里面确切的文本进行扫描的属性,例如

<div class="farm-market-items"> 
    <a class="market-item" data-item-type="seed" data-item-id="817"> 
    Carrot Seed 
    <img alt="" src="" class="item-thumb" /> 
    </a> 
    <a class="market-item" data-item-type="seed" data-item-id="25"> 
    Spinach Seed 
    </a> 
    <a class="market-item" data-item-type="tree" data-item-id="981"> 
    Pear Tree 
    </a> 
</div> 

现在你可以(准确)扫描:

all_seeds = $('a[data-item-type="seed"]'); 

(我的数据 - *属性的大风扇。)

+0

出于某种原因需要采用上述格式。所以我只能从innerText中查询它。 – 2010-02-11 02:57:58

相关问题