Frage

Ich habe einen Selektor „td > a.leftmenuitem:last, div > a.leftmenuitem:last“, und ich möchte es ein wenig vereinfachen. Ich habe versucht, „* > a.leftmenuitem:last“, „td, div > a.leftmenuitem:last“ und „(td, div) > a.leftmenuitem:last“, von denen keiner die erste Auswahl funktioniert die Art und Weise arbeiten. Ist diese Art der Sache einfach nicht möglich, in der Auswahl Syntax ohne eine separate Auswahl für jeden zu machen?

War es hilfreich?

Lösung

Sie können nicht vereinfachen:

td > a.leftmenuitem:last, div > a.leftmenuitem:last

, ohne dass es etwas gemeinsam zu sein, so dass Sie alle relevanten td und div-Elemente mit einem Ausdruck auswählen können. Zum Beispiel, wenn sie beide Klasse bla haben, können Sie tun:

.blah > a.leftmenuitem:last

Aber nicht diese Art von Ausdruck verwenden, wenn Sie es vermeiden können. Klasse Selektoren langsam ist (im Vergleich zu ID und Tag-Selektoren).

Gibt es etwas falsch mit nur?

a.leftmenuitem:last

By the way, sind Sie sicher, :last ist die richtige Wahl? Viele Leute verwenden es fälschlicherweise, es für :last-child zu verkennen. :last wird nur ein Element entsprechen, das letzte Element Matching auf der Seite.

Andere Tipps

Was ist größer, manchmal ist schneller. Wenn Sie * anstelle von td , Ihre Abfrage ist viel langsamer.

Ich glaube nicht, dass Sie es vereinfachen können. Ich würde stattdessen entscheiden sich auf die Links geben Sie in einer einzigartigen Klasse interessiert sind, so dass man einfach "a.<my-unique-class>:last" tun können. Auf diese Weise jquery einfach scannen alle passenden <a>-Tags, ohne sich Gedanken über ihre Eltern ein <td> Element zu sein.

Ihre Wähler ist einfach genug. Wenn Sie es vereinfachen wollen, könnten Sie so etwas wie tun:

$('a.leftmenuitem:last').parent().doWhateverYouWereGoingToDo();

Ich bezweifle, dass dies zu einer schnelleren Ausführungszeiten führen würde, jedoch.

Vielleicht bin ich nur verwirrt, aber wenn

* > a.leftmenuitem:last

für Sie arbeiten würde, dann warum nicht mit

a.leftmenuitem:last

statt?

Der Selektor Sie verwenden ist

Parent > Child 

alle Elemente Kind durch Child von Elementen durch Parent angegeben angegebenen übereinstimmen. Es sei denn, Sie <a> Elemente an anderer Stelle in der Seite verwenden, die keine Kinder von <div> und <td> Elemente sind, warum nicht nur verwenden

$('a.leftmenuitem:last')

Bin ich etwas fehlt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top