Bei mehreren Ankertags:
<a class="myclass" href="...">My Text</a>
Wie wähle ich die Anker aus, die der Klasse und einem bestimmten Text entsprechen? zB Alle Anker mit der Klasse auswählen: 'myclass' und text: 'My Text'
jquery
html
css-selectors
Geoff Appleford
quelle
quelle
$('a.myclass[href]:contains("My Text")')
Sie können eine benutzerdefinierte Auswahl erstellen, die der
:contains
für genaue Übereinstimmungen ähnelt :$.expr[':'].containsexactly = function(obj, index, meta, stack) { return $(obj).text() === meta[3]; }; var myAs = $("a.myclass:containsexactly('My Text')");
quelle
Wenn Sie nur gestört sind, wenn der Text des Ankers eine bestimmte Zeichenfolge enthält , wählen Sie die Lösung von @Dave Morton. Wenn Sie jedoch genau mit einer bestimmten Zeichenfolge übereinstimmen möchten , würde ich Folgendes vorschlagen:
$.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>
Leicht verbesserte Version (mit einem zweiten Trimmparameter ):
$.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>
quelle
Wählen Sie zunächst alle Tags aus, die 'MEIN Text' enthalten. Wenn jede genaue Übereinstimmung mit der Bedingung übereinstimmt, tun Sie, was immer Sie wollen.
$(document).ready(function () { $("a:contains('My Text')").each(function () { $store = $(this).text(); if ($store == 'My Text') { //do Anything..... } }); });
quelle
Wenn Sie die Klasse des gewünschten Objekts nicht kennen und nur nach dem Linktext suchen möchten, können Sie ihn verwenden
$(".myClass:contains('My Text')")
Wenn Sie nicht einmal wissen, um welches Element es sich handelt (z. B. a, p, link, ...), können Sie es verwenden
$(":contains('My Text')")
(Lassen Sie das Teil einfach
:
leer.)Ich muss hier hinzufügen, dass alle Elemente beginnend mit
<html>
-Tag bis zum gewünschten Element angezeigt werden. Eine Lösung, die ich anbieten könnte, ist das Hinzufügen.last()
, aber diese funktioniert nur, wenn nur ein einziges Element zu finden ist. Vielleicht sbdy. kennt hier eine bessere Lösung.Eigentlich sollte dies eine Ergänzung zur akzeptierten Antwort sein, insbesondere zur @ Malgovinus-Frage.
quelle
Ich denke, das sollte für die exakte Übereinstimmung funktionieren.
$("a.myclass").html() == "your text"
quelle
html()
gilt nur für das erste Element in der Gruppe der übereinstimmenden Elemente ( api.jquery.com/html ). Sie benötigen einen Kontrollfluss oder eine Iteration, um durch jeden der Anker zu gehen, zeach()
.