2011-11-25 3 views
32

Me gustaría agregar una clase (class = "bbox") a una ul-list pero solo si no existe una clase. Esto es lo que tengo hasta ahora. ¿Cómo consulto con jquery si existe una clase en la etiqueta ul-tag?agregar clase a través de jquery pero solo cuando no existe

$("ul").addClass("bbox"); 
+10

No hay necesidad de comprobar si la clase tiene ya ha sido agregado; '.addClass' realizará una verificación' .hasClass' internamente. Ver: http://stackoverflow.com/questions/13358887 –

Respuesta

34

Si desea comprobar si existe una clase específica a continuación:

if(!$("ul").hasClass("class-name")){ 
    $("ul").addClass("bbox"); 
} 

Si desea comprobar si existe cualquier clase:

if ($('ul').attr('class') == '') { 
    $("ul").addClass("bbox"); 
} 
+0

Intenté seleccionar el primer ul dentro de #content pero selecciona todo. ¿qué está mal? if ($ ('# contenido ul: nth-child (1)'). hasClass ("bbox") == falso) { $ ("ul"). addClass ("bbox"); } – mark

+2

'hasClass()' ya devuelve verdadero o falso por lo que la comprobación si igual a falso es redundante. 'if (! $ ('ul'). hasClass ('classname'))' sería suficiente – Andy

+0

@Andy True, respuesta modificada. –

3

concisa:

// fine, because nothing happens if 
// there are no matching elements 
$("ul[class='']").addClass("bbox"); 
+0

¡agradable y corto! – lucapette

+0

No funcionará si tiene una clase abox y está tratando de agregar bbox. La solución de Matt resuelve este problema. –

16

karim79 ¡casi lo tienes!

déjame corregirte

$("ul:not([class*='bbox'])").addClass("bbox"); 

hacer coincidir con la etiqueta absoluta no hay clases, y si ul tenía otras clases no se hizo el juego. Tienes que buscar la clase exacta que deseas agregar. Al igual que .hasClass Approach.

creo que sirve

+2

Si no me equivoco, olvidaste los corchetes alrededor del selector de atributos.Además, '$ (" ul: no ([clase ~ = 'bbox']) "). AddClass (" bbox ");' sería mejor (tilde). – Bart

11

me preguntaba esto funcionaría bien ->

$("ul").removeClass("bbox").addClass("bbox");

Primero se eliminará si hay alguno y luego se agregará uno nuevo. Funcionó mejor para mí, ya que soy muy perezosa para escribir todo lo que if cosita.

3

puede utilizar este código para añadir la clase sólo cuando si no existe

$('.your-dom:not(.class-name)').addClass('class-name'); 
8

Sólo tiene que utilizar $('.selector').addClass("myClass");.

Las funciones de clase para agregar/eliminar jQuery comprueban si hay duplicados internamente, lo que significa que llamar a addClass dos veces solo agregará la clase una vez.

+0

de documentos jQuery: https://api.jquery.com/addclass/ Es importante tener en cuenta que este método no reemplaza una clase. Simplemente agrega la clase, anexándola a cualquiera que ya se haya asignado a los elementos. – vanduc1102

0

Si estoy alternar entre 2 clases que utilizar este método

if (foo) 
    $('button.btn-foo').removeClass('foo bar').addClass('foo'); 
if (bar) 
    $('button.btn-foo').removeClass('foo bar').addClass('bar'); 

Así que no tengo que comprobar el ajuste actual del botón

Cuestiones relacionadas