如何select具有特定文本的所有锚标签
给定多个定位标记:
<a class="myclass" href="...">My Text</a>
如何select匹配类和一些特定文本的锚点。 例如,select所有类别为“myclass”和文本:“我的文本”
$("a.myclass:contains('My Text')")
您可以创build类似于:contains
的自定义select器:contains
完全匹配:
$.expr[':'].containsexactly = function(obj, index, meta, stack) { return $(obj).text() === meta[3]; }; var myAs = $("a.myclass:containsexactly('My Text')");
如果您只是在锚文本包含特定string时感到困扰,请使用@Dave Morton的解决scheme。 但是,如果你想完全匹配一个特定的string,我会build议这样的事情:
$.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>
首先,select包含“我的文字”的所有标签。 那么对于每一个完全匹配,如果它符合条件做你想做的事情。
$(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>
-Tag开始到所需元素的元素。 我可以提供的解决scheme是添加.last()
,但只有只有一个元素才能find。 也许sbdy。 在这里知道更好的解决scheme
其实,这应该是被接受的答案的补充,尤其是@Amalgovinus问题。
我认为这应该适用于完全匹配的事情..
$("a.myclass").html() == "your text"