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

给定多个锚标记:

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

我如何选择锚匹配类和一些特定的文本。例如,选择所有锚与类:’myclass’和文本:’我的文本’

67360 次浏览
$("a.myclass:contains('My Text')")

如果你只是因为主播的文本 包含是一个特定的字符串而烦恼,那么就用@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>

略有改进的版本(带有第二个 修剪参数) :

$.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>

您可以为精确匹配创建一个类似于 :contains的自定义选择器:

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


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

我认为这应该工作,为完全匹配的东西. 。

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

首先,选择包含“ MY text”的所有标记。然后,对于每个精确匹配,如果它匹配的条件做任何你想做的。

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


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

如果您不知道所需对象的类,只是想去后面的链接文本,它是可以使用的

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

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

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

(只留下 :之前的部分为空白。)

我必须在这里补充,它带来了从 <html>-标签开始的所有元素到所需的元素。我可以提供的一个解决方案是向其中添加 .last(),但是这个方案只有在只需要查找单个元素的情况下才有效。也许是 sbdy。知道一个更好的解决方案。

事实上,这应该是一个被接受的答案,特别是@Amalgovinus 问题的补充。