So finden Sie Elemente, die mehreren Bedingungen entsprechen

7

Was ich tun muss, ist alle Elemente auf der Seite zu finden die "tag" in der Eigenschaft href enthalten und der Text des Elements enthält ein bestimmtes Wort.

Zum Beispiel

%Vor%

Ich weiß, ich kann alle Elemente mit einem Tag in der href wie folgt erhalten:

%Vor%

Ich finde auch alle Elemente mit "Autos" im Text so:

%Vor%

Aber wie kombiniere ich diese beiden Bedingungen zu einer einzigen Aussage, die besagt: Finde alle Elemente, die 'tag' in der href enthalten und 'cars' im Text enthalten?

    
Dmitri 06.03.2013, 23:34
quelle

3 Antworten

15

Hast du $("a[href*=tag]:contains('cars')"); versucht?

Du kannst für immer so weitermachen, d. h.

%Vor%     
iMoses 06.03.2013, 23:36
quelle
3

Wie die anderen Leute sagten, oder, wenn die beiden Bedingungen separat angewendet werden müssen, mit anderem Code dazwischen, dann ...

%Vor%

dann später ...

%Vor%

.filter() ist die verallgemeinerte Methode zum Reduzieren einer vorhandenen jQuery-Auswahl.

Wie viele andere jQuery-Methoden gibt .filter() ein jQuery-Objekt zurück, so dass es eine Kette bildet:

%Vor%

.filter() ist auch gut aus Gründen, die ich nicht erklären wollte, und ich brauche das nicht, weil @ bažmegakapa dies gerade sehr eloquent getan hat.

    
Beetroot-Beetroot 06.03.2013 23:43
quelle
3

Die anderen Antworten zeigen schöne und funktionierende Beispiele. Aber es gibt eine interessante Eigenart hier, die Unterscheidung zwischen nativen CSS-Selektoren (die auch vom nativen querySelectorAll() unterstützt werden). ) und Selektoren, die von jQuery definiert werden .

Das Mischen ist möglicherweise kein Glück, denn dann kann die viel schnellere native Engine nicht verwendet werden. Zum Beispiel auf :has() der Status der jQuery-Dokumentation:

  

Weil: has () eine jQuery-Erweiterung und nicht Teil des CSS ist   Spezifikation, Abfragen mit: has () kann den Vorteil nicht ausnutzen   Leistungssteigerung durch das native DOM querySelectorAll ()   Methode.

Aus diesem Grund sollten Sie besser mit der nativen Methode abfragen und dann filtern , indem Sie jQuery-spezifische Selektoren verwenden:

%Vor%     
kapa 06.03.2013 23:47
quelle