2012-05-11 17 views
8

Quiero excluir el primer y segundo elemento del selector de jquery. He intentado esto:jquery selector - excluir primero y segundo

$('p:not(:nth-child(1),:nth-child(2))') 

Pero esto sólo se excluye el primer elemento ... Gracias

+0

Esto debería funcionar si su primer y segundo hijo son, de hecho, elementos 'p'. Las preguntas como esta funcionan mejor cuando se proporciona el marcado de trabajo. – BoltClock

Respuesta

16

Esta secuencia utiliza jQuery .slice() para descartar los dos primeros elementos de la selectora $('p'):

$('p').slice(2). 

ver http://jsfiddle.net/alnitak/zWV7Z/

Tenga en cuenta que este es no el mismo que nth-child - la exclusión se basa en el conjunto de los elementos que se encuentran en el primer selector, y no en su posición relativa en el DOM.

+0

Prefiero esta solución. Gracias – simPod

0
$('p').not($('p').eq(0), $('p').eq(1)) 
14

Simplemente:

$('p:gt(1)') 

http://api.jquery.com/gt-selector/

demostración http://jsfiddle.net/NtFYq/1/

Como Alnitak ha señalado en el comentario, si el rendimiento es una preocupación, puede utilizar su solución de slice

Gracias un montón @Alnitak por señalarlo :)

+0

sí, eso funciona, pero será menos eficiente que '.slice()' porque el pseudo-selector evitará el uso de la función 'querySelectorAll()' nativa. – Alnitak

+0

+1, uhm, genial. – undefined

+0

@Alnitak apuntó, gracias :) –

2

intento:

Referencia: http://www.w3.org/TR/selectors/#negation

de que la referencia: "La pseudo-clase de negación,: No (X) , es una notación funcional que toma un selector simple (excluyendo la propia pseudoclase de negación) como argumento .... "

+0

Esto es relevante para CSS, pero no para jQuery; La versión de jQuery del selector ': not()' permite una lista separada por comas de cualquier selector arbitrariamente complicado, y la única razón para escribir una versión válida de CSS en una cadena jQuery es para el rendimiento (ver los comentarios en uno de los otros respuestas sobre 'querySelectorAll()'). Voy a publicar una pregunta detallando esta diferencia pronto ... – BoltClock

+1

Si realmente desea escribir una versión válida de CSS, debería ser 'p: not (: nth-child (1)): not (: nth-child (2))', not 'p: not (: nth-child (1)), p: not (: nth-child (2)) '. Nuevamente, esto será cubierto en mi publicación. – BoltClock

+0

@BoltClock: Veo, el selector necesita producir la negación de la unión [1º, 2º] no la unión de la negación de cada [1º] y [2º], porque este último solo incluiría a todos los niños desde [1º ] y [2nd] son ​​mutuamente excluyentes. Gracias. – Faust