Question

J'ai un sélecteur, & "; td > a.leftmenuitem:last, div > a.leftmenuitem:last &" et j'aimerais le simplifier un peu. J'ai essayé & "; * > a.leftmenuitem:last &"; & "; td, div > a.leftmenuitem:last &" Et & "; (td, div) > a.leftmenuitem:last &"; Aucun fonctionne comme le premier sélecteur. Est-ce que ce genre de chose est tout simplement impossible dans la syntaxe du sélecteur sans créer un sélecteur distinct pour chacun?

Était-ce utile?

La solution

Vous ne pouvez pas simplifier:

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

sans qu'il y ait quelque chose en commun, vous pouvez donc sélectionner tous les éléments td et div pertinents avec une seule expression. Par exemple, si les deux avaient la classe blah, vous pouvez faire:

.blah > a.leftmenuitem:last

Mais n'utilisez pas ce type d'expression si vous pouvez l'éviter. Les sélecteurs de classe sont lents (comparés aux sélecteurs ID et tag).

Quelque chose ne va pas avec juste?

a.leftmenuitem:last

?

Au fait, êtes-vous certain que :last est le bon choix? Beaucoup de gens l'utilisent à tort, en le prenant pour :last-child. <=> ne fera correspondre qu'un seul élément, le dernier élément correspondant trouvé sur la page.

Autres conseils

Ce qui est plus gros est parfois plus rapide. Lorsque vous utilisez * au lieu de td , votre requête est beaucoup plus lente.

Je ne pense pas que vous puissiez le simplifier. Je préférerais plutôt donner aux liens qui vous intéressent une classe unique, afin que vous puissiez simplement faire "a.<my-unique-class>:last". De cette façon, jQuery peut simplement analyser toutes les balises <a> correspondantes sans s’inquiéter du fait que leur parent soit un <td> élément.

Votre sélecteur est assez simple. Si vous voulez le simplifier, vous pouvez faire quelque chose comme:

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

Cependant, je doute que cela se traduise par des temps d'exécution plus rapides.

Peut-être que je suis juste confus, mais si

* > a.leftmenuitem:last

travaillerait pour vous, alors pourquoi ne pas aller avec

a.leftmenuitem:last

à la place?

Le sélecteur que vous utilisez est

Parent > Child 

correspond à tous les éléments enfants spécifiés par Child des éléments spécifiés par Parent. Sauf si vous utilisez <a> des éléments ailleurs dans la page qui ne sont pas des enfants des éléments <div> et <td>, pourquoi ne pas utiliser simplement

$('a.leftmenuitem:last')

Est-ce que je manque quelque chose?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top