Mit jQuery möchte ich einen Link auswählen, der genau eine Art Text enthält. Beispielsweise:
<p><a>This One</a></p>
<p><a>"This One?"</a></p>
<p><a>Unlikely</a></p>
Ich habe das versucht:
$('a:contains("This One")')
Aber es wählt den ersten UND den zweiten Link. Ich möchte nur den ersten Link, der genau "This One" enthält. Wie kann ich das machen?
jquery
jquery-1.6
Endy Tjahjono
quelle
quelle
Antworten:
Du kannst das:
Referenz: http://api.jquery.com/filter/
quelle
return
. Ich muss es ändern infunction(index) { return (this.text === 'This One') }
Ein Mitarbeiter von mir hat jQuery um folgende Funktion erweitert:
Das Ergebnis ist, dass Sie etwas durch exakten Text auf folgende Weise auswählen können:
Dies macht es einfach, da Sie sich nicht jedes Mal die genaue Syntax merken müssen. Sein gesamter Beitrag ist hier: jQuery Custom Selector zum Auswählen von Elementen nach genauem Text: textEquals
quelle
Um die Antwort von FishBasketGordo zu erweitern. Wenn Sie versuchen, die Auswahl für eine große Anzahl von Elementen zu treffen, verwenden Sie diese Option, um
:contains()
sie einzugrenzen, und wenden Sie dann den Filter an.Dies verbessert die Gesamtgeschwindigkeit:
quelle
musste Narimans Lösung modifizieren, um zu sein:
Ansonsten funktionierte nicht auf Chrome (Linux)
quelle
Ich habe die Erweiterung verwendet
Ich habe jedoch festgestellt, dass die Implementierung mit jQuery 1.7 nicht mehr funktioniert (anscheinend eine Änderung in Sizzla.filter). Nachdem ich einige Zeit damit zu kämpfen hatte, dass es funktioniert, habe ich einfach ein jQuery-Plugin geschrieben, um dasselbe zu erreichen.
Verwenden:
Ich wollte nur teilen, falls jemand anderes darauf stößt (,
quelle
Narnians Antwort funktioniert also ziemlich gut. Bei der Verwendung in freier Wildbahn stieß ich jedoch auf einige Probleme, bei denen Dinge, von denen ich erwartet hätte, dass sie gefunden werden, nicht gefunden wurden. Dies lag daran, dass der Text des Elements manchmal von zufälligen Leerzeichen umgeben ist. Ich glaube, wenn Sie nach "Hello World" suchen, möchten Sie immer noch, dass es mit "Hello World" oder sogar "Hello World \ n" übereinstimmt. Daher habe ich der Funktion gerade die Methode "trim ()" hinzugefügt, mit der umgebende Leerzeichen entfernt werden, und sie hat begonnen, besser zu funktionieren. Außerdem habe ich die Variablennamen so geändert, dass sie mir etwas klarer erscheinen.
Speziell...
Und sekundäre Anmerkung ... Trimmen entfernt nur Leerzeichen vor und nach dem gesuchten Text. Leerzeichen in der Mitte der Wörter werden nicht entfernt. Ich glaube, das ist wünschenswertes Verhalten, aber Sie können das ändern, wenn Sie wollen.
quelle
Ich habe das Gefühl, dass mir etwas fehlt, basierend auf der Antwort aller anderen auf den Filter, aber warum nicht einfach das erste Element innerhalb des Arrays von Elementen auswählen, das von 'enthält' zurückgegeben wird?Dies funktioniert nur, wenn Sie wissen, dass der erste Link genau die gewünschte Übereinstimmung aufweist. Andere Antworten funktionieren besser, wenn Sie nicht sicher sind, in welcher Reihenfolge sich die Links befinden.
quelle
So erhalten Sie den ausgewählten Wert von einem Drop-Dwon:
console.log($("option").textEquals("Option One"));
- Es wird der Wert des Dropdowns zurückgegebenquelle
quelle
Entschuldigung, wenn dies genau mit der obigen Antwort übereinstimmt,
Hier finden Sie einige Ausgaben in der Linkedin-Suchergebnisseitenkonsole.
Es unterstützt auch die Groß- und Kleinschreibung und wird nicht verwendet
:contains()
Bearbeiten (22. Mai 2017): -
quelle