Domanda

Ho un selettore, " td > a.leftmenuitem:last, div > a.leftmenuitem:last " ;, e vorrei semplificarlo un po '. Ho provato & Quot; * > a.leftmenuitem:last & Quot ;, & Quot; td, div > a.leftmenuitem:last & Quot ;, e & Quot; (td, div) > a.leftmenuitem:last & Quot ;, nessuna delle quali funziona come fa il primo selettore. Questo genere di cose non è semplicemente possibile nella sintassi del selettore senza creare un selettore separato per ciascuno?

È stato utile?

Soluzione

Non puoi semplificare:

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

senza che ci sia qualcosa in comune in modo da poter selezionare tutti gli elementi td e div rilevanti con una sola espressione. Ad esempio, se entrambi avessero classe blah, potresti farlo:

.blah > a.leftmenuitem:last

Ma non usare questo tipo di espressione se puoi evitarlo. I selettori di classe sono lenti (rispetto ai selettori ID e tag).

C'è qualcosa che non va solo?

a.leftmenuitem:last

A proposito, sei sicuro che :last sia la scelta corretta? Molte persone lo usano erroneamente, scambiandolo per :last-child. <=> corrisponderà a un solo elemento, l'ultimo elemento corrispondente trovato nella pagina.

Altri suggerimenti

Ciò che è più grande, a volte è più veloce. Quando usi * invece di td , la tua query è molto più lenta.

Non credo che tu possa semplificarlo. Preferirei invece fornire i link che ti interessano in una classe unica, in modo che tu possa semplicemente fare "a.<my-unique-class>:last". In questo modo jquery può semplicemente scansionare tutti i tag <a> corrispondenti senza preoccuparsi che il loro genitore sia un elemento <td>.

Il tuo selettore è abbastanza semplice. Se volessi semplificarlo, potresti fare qualcosa del tipo:

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

Dubito che ciò comporterebbe tempi di esecuzione più rapidi, tuttavia.

Forse sono solo confuso, ma se

* > a.leftmenuitem:last

funzionerebbe per te, quindi perché non andare con

a.leftmenuitem:last

, invece?

Il selettore che stai utilizzando è

Parent > Child 

corrisponde a tutti gli elementi figlio specificati da Child degli elementi specificati da Parent. A meno che tu non stia utilizzando <a> elementi altrove nella pagina che non sono figli di <div> e <td> elementi, perché non usare semplicemente

$('a.leftmenuitem:last')

Mi manca qualcosa?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top