如何选择具有特定文本的所有锚标签

时间:2010-03-15 12:13:54

标签: jquery html css-selectors

给定多个锚标记:

<a class="myclass" href="...">My Text</a>

如何选择与班级匹配的锚点以及某些特定文本。例如,选择所有具有类的锚点:'myclass'和text:'My Text'

6 个答案:

答案 0 :(得分:114)

$("a.myclass:contains('My Text')")

答案 1 :(得分:13)

您可以为完全匹配创建类似于:contains的自定义选择器:

$.expr[':'].containsexactly = function(obj, index, meta, stack) 
{  
    return $(obj).text() === meta[3];
}; 

var myAs = $("a.myclass:containsexactly('My Text')");

答案 2 :(得分:4)

如果您只是在锚点的文本包含特定字符串时感到困扰,请使用@Dave Morton的解决方案。但是,如果您希望完全匹配特定字符串,我会建议这样的事情:

$.fn.textEquals = function(txt) {
    return $(this).text() == txt;
}

$(document).ready(function() {
    console.log($("a").textEquals("Hello"));
    console.log($("a").textEquals("Hefllo"))
});

<a href="blah">Hello</a>

稍微改进的版本(带有第二个 trim 参数):

$.fn.textEquals = function(txt,trim) {
    var text = (trim) ? $.trim($(this).text()) : $(this).text();
    return text == txt;
}

$(document).ready(function() {
    console.log($("a.myclass").textEquals("Hello")); // true
    console.log($("a.anotherClass").textEquals("Foo", true)); // true
    console.log($("a.anotherClass").textEquals("Foo")); // false
});

<a class="myclass" href="blah">Hello</a>
<a class="anotherClass" href="blah">   Foo</a>

答案 3 :(得分:3)

首先,选择包含&#39; MY text&#39;的所有标签。然后,对于每个完全匹配,如果它符合条件做你想做的事情。

$(document).ready(function () {
    $("a:contains('My Text')").each(function () {
        $store = $(this).text();

        if ($store == 'My Text') {
            //do Anything.....
        }
    });
});

答案 4 :(得分:0)

如果您不知道所需对象的类,只想了解链接文本,则可以使用

$(".myClass:contains('My Text')")

如果你甚至不知道它是哪个元素(例如a,p,link,......)你可以使用

$(":contains('My Text')")

(只是将:之前的部分留空。)

我必须在此处添加它,它会显示从<html>开始的所有元素 - 标记到所需的元素。我可以提供的解决方案是向其中添加.last(),但只有在只有一个要查找的元素时,此解决方案才有效。也许sbdy。在这里知道更好的解决方案。

实际上,这应该是对已接受答案的补充,特别是@Amalgovinus问题。

答案 5 :(得分:-2)

我认为这应该适用于完全匹配的东西..

$("a.myclass").html() == "your text"