Tengo un div con id="a"
que puede tener cualquier cantidad de clases adjuntas, de varios grupos. Cada grupo tiene un prefijo específico. En javascript, no sé qué clase del grupo está en el div. Quiero poder borrar todas las clases con un prefijo dado y luego agregar una nueva. Si quiero eliminar todas las clases que comienzan con "bg", ¿cómo lo hago? Algo como esto, pero que realmente funciona:
$("#a").removeClass("bg*");
javascript
jquery
css
Puntilla
fuente
fuente
Una expresión regular dividida en el límite de la palabra
\b
no es la mejor solución para esto:o como una mezcla de jQuery:
Actualización de 2018 ES6:
fuente
filter
debe devolver un booleano. Esto funcionará:var classes = $(e).attr("class").split(" "); $(classes).each(function(i, item) { classes[i] = item.indexOf("prefix") === -1 ? item : "prefix-new"); }); $(e).attr("class", classes.join(" "));
$e.attr('class', $.map($e.attr('class').split(' '), function (klass) { return klass.indexOf(prefix) != 0 ? klass : undefined; }).join(' '));
class="blackRow blackText orangeFace blackHead"
, volveráclass=" orangeFace "
si correremoveClassPrefix("black");
. He resuelto este recortando el resultado de este modo:el.className = $.trim(classes.join(" "));
.Escribí un complemento jQuery simple : alterClass , que elimina la clase comodín. Opcionalmente también agregará clases.
fuente
No necesita ningún código específico de jQuery para manejar esto. Simplemente use una expresión regular para reemplazarlos:
Puede modificar esto para admitir cualquier prefijo, pero el método más rápido está arriba, ya que la expresión regular se compilará solo una vez:
fuente
Usando la segunda firma de
$.fn.removeClass
:fuente
http://www.mail-archive.com/[email protected]/msg03998.html dice:
... y .removeClass () eliminaría todas las clases ...
Esto funciona para mi ;)
salud
fuente
Un enfoque que usaría usando construcciones jQuery simples y funciones de manejo de matrices, es declarar una función que toma la identificación del control y el prefijo de la clase y borra todas las clasificadas. Se adjunta el código:
Ahora, esta función se puede llamar desde cualquier lugar, al hacer clic en el botón o desde el código:
fuente
Estaba buscando una solución para exactamente el mismo problema. Para eliminar todas las clases que comienzan con el prefijo "fontid_" Después de leer este artículo, escribí un pequeño complemento que estoy usando ahora.
Uso:
fuente
Para navegadores modernos:
fuente
Sé que es una pregunta antigua, pero encontré una nueva solución y quiero saber si tiene desventajas.
fuente
En una línea ... Elimina todas las clases que coinciden con una expresión regular someRegExp
fuente
La respuesta de Prestaul fue útil, pero no funcionó para mí. La forma jQuery de seleccionar un objeto por id no funcionó. Tuve que usar
en vez de
fuente
También utilizo guiones'- 'y dígitos para el nombre de la clase. Entonces mi versión incluye '\ d-'
fuente
fuente
fuente