给定多个锚标记:
<a class="myclass" href="...">My Text</a>
如何选择与班级匹配的锚点以及某些特定文本。例如,选择所有具有类的锚点:'myclass'和text:'My Text'
答案 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"