Pergunta

Eu tenho um seletor, "td > a.leftmenuitem:last, div > a.leftmenuitem:last", e eu gostaria de simplificá-lo um pouco. Eu tentei "* > a.leftmenuitem:last", "td, div > a.leftmenuitem:last", e "(td, div) > a.leftmenuitem:last", nenhum dos quais funcionam da maneira que o primeiro selector faz. É este tipo de coisa simplesmente não é possível na sintaxe selector sem fazer um seletor separado para cada um?

Foi útil?

Solução

Você não pode simplificar:

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

sem que haja algo em comum para que você pode selecionar todos os elementos td e div relevantes com uma expressão. Por exemplo, se ambos tinham classe blá você poderia fazer:

.blah > a.leftmenuitem:last

Mas não use esse tipo de expressão, se você pode evitá-lo. seletores de classe são lentos (em comparação com ID e tag seletores).

Existe errado algo com apenas?

a.leftmenuitem:last

?

A propósito, você está certo :last é a escolha correta? Muitas pessoas erroneamente usá-lo, confundindo-a com :last-child. :last só irá corresponder a um elemento, o último elemento correspondente encontrado na página.

Outras dicas

O que é maior, às vezes é mais rápido. Quando você usa * em vez de td , sua consulta é muito mais lento.

Eu não acho que você pode simplificá-lo. I tinha em vez opt no sentido de dar os links que você está interessado em uma classe única, de modo que você pode simplesmente fazer "a.<my-unique-class>:last". Dessa forma, jQuery pode simplesmente varrer todas as tags <a> correspondência sem se preocupar com o seu pai ser um elemento <td>.

O seletor é bastante simples. Se você quisesse simplificá-lo, você poderia fazer algo como:

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

Eu duvido que isso resultaria em tempos de execução mais rápidos, no entanto.

Talvez eu esteja apenas confuso, mas se

* > a.leftmenuitem:last

iria trabalhar para você, então porque não ir com

a.leftmenuitem:last

em vez disso?

O seletor que você está usando é

Parent > Child 

coincidir com todos os elementos filho especificados por Child de elementos especificados pelo Parent. A menos que você estiver usando elementos <a> em outras partes da página que não são filhos de <div> e <td> elementos, por que não usar

$('a.leftmenuitem:last')

Estou faltando alguma coisa?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top