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'
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'
Antworten:
$("a.myclass:contains('My Text')")
$('a.myclass[href]:contains("My Text")')
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>
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.....
}
});
});
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.
Ich denke, das sollte für die exakte Übereinstimmung funktionieren.
$("a.myclass").html() == "your text"
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, z each()
.