¿Cómo excluir nombres de clase específicos en querySelectorAll()?

1 minuto de lectura

¿Cómo puedo excluir elementos de etiquetas que tienen un nombre de clase específico?

<span class="test" />
<span class="test asd" />

document.querySelectorAll('span.test'); //how to exclude all spans with "asd" as class name?

  • $(‘span:not(.asd)’) – Esto te ayudará

    – prakashstar42

    1 de septiembre de 2014 a las 11:59

  • posible duplicado de ¿Cómo puedo excluir una clase de mi selector jQuery?

    –Paolo Moretti

    1 de septiembre de 2014 a las 11:59

  • @membersound Así que finalmente elegiste querySelectorAll?

    – Visión

    1 de septiembre de 2014 a las 12:01

Usar :not Pseudoclase CSS:

document.querySelectorAll('span.test:not(.asd)');

  • ¡Funcionó muy bien en mi caso! Muchísimas gracias.

    – Arif Billah

    14 de marzo a las 9:27

Utilizar el pseudo-selector de negación de CSS, :not():

document.querySelectorAll('span.test:not(.asd)');

La pseudo-clase negación, :not(X), es una notación funcional que toma un selector simple (excluyendo la propia pseudoclase de negación) como argumento. Representa un elemento que no está representado por su argumento.

  • Y si .asd es una clase padre? Por ejemplo, si necesitamos seleccionar algunos elementos con clase .bbb que no tienen .asd en alguna clase de padres? ¿Es posible usar :not() ¿de esa manera? ¿O deberíamos seleccionar primero todos los elementos con clase? .test y sin clase .asdy luego de alguna manera extraer de los elementos NodeList resultantes con clase .bbb? Si es así, ¿cómo? 🙂

    – COMO

    21 oct 2018 a las 6:00

Elemento por tagName e ignorar o excluir elementos que tienen una clase específica:

document.querySelectorAll(`svg,div:not([class*="background"]`)

¿Ha sido útil esta solución?