jQuery: selecciona todos los elementos de una clase dada, excepto un Id en particular


146

Esto es probablemente bastante simple.

Quiero seleccionar todos los elementos de una clase dada thisClass, excepto donde está la identificación thisId.

es decir, algo equivalente a (donde - / menos implica eliminar):

$(".thisClass"-"#thisId").doAction();

Respuestas:


290

Use el selector: no .

$(".thisclass:not(#thisid)").doAction();

Si tiene múltiples identificadores o selectores, simplemente use el delimitador de coma, además:

(".thisclass:not(#thisid,#thatid)").doAction();


3
¿Qué sucede si desea excluir más de una clase? THX
SoulMagnet

13
De la documentación: All selectors are accepted inside :not(), for example: :not(div a) and :not(div,a)así que solo use los selectores delimitados por comas para hacer múltiples(".thisclass:not(#thisid,#thatid)").doAction();
Chase

trabajó con comillas simples como esta: $ (". thisclass: not ('# thisid')"). doAction ();
Muhammad Raja

o si desea enlazar a todos los elementos secundarios que tienen un nombre de clase específico, excepto uno, puede hacer lo siguiente: $ ('. thisclass: not (#id) .otherclass'). doAction ()
dalmate

¿Qué pasa si tengo un código estándar como: $ ('# some'). notimportant, $ ('# another'). dosomethingelse y quiero evitar la ejecución sobre una identificación específica dada dinámicamente?
Botea Florin


7

Puede usar la función .not como en los siguientes ejemplos para eliminar elementos que tengan una identificación exacta, una identificación que contenga una palabra específica, una identificación que comience con una palabra, etc ... consulte http://www.w3schools.com/jquery/jquery_ref_selectors .asp para obtener más información sobre los selectores jQuery.

Ignorar por ID exacto:

 $(".thisClass").not('[id="thisId"]').doAction();

Ignorar las identificaciones que contienen la palabra "Id"

$(".thisClass").not('[id*="Id"]').doAction();

Ignorar las identificaciones que comienzan con "mi"

$(".thisClass").not('[id^="my"]').doAction();

6

Solo agregaré una respuesta JS (ES6), en caso de que alguien la esté buscando:

Array.from(document.querySelectorAll(".myClass:not(#myId)")).forEach((el,i) => {
    doSomething(el);
}

Actualización (esto puede haber sido posible cuando publiqué la respuesta original, pero agregando esto ahora de todos modos):

document.querySelectorAll(".myClass:not(#myId)").forEach((el,i) => {
    doSomething(el);
});

Esto elimina el Array.fromuso.

document.querySelectorAlldevuelve a NodeList.
Lea aquí para saber más sobre cómo iterar sobre él (y otras cosas): https://developer.mozilla.org/en-US/docs/Web/API/NodeList



2

Usar el .not()método con la selección de un elemento completo también es una opción.

De esta manera, podría ser útil si desea realizar otra acción con ese elemento directamente.

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.