jQuery.removeClass() ne fonctionne pas

j'ai besoin de supprimer une classe CSS d'un champ de texte car je veux changer sa couleur de fond. Je dois changer la couleur de nouveau plus tard, donc je dois ajouter et supprimer des classes dans le champ, en fonction de certaines données.

.addClass fonctionne parfaitement bien. Le problème est que la classe originale est au-dessus de la classe ajoutée, donc les changements ne sont pas affichés, mais la classe est ajoutée correctement. J'essaie maintenant de supprimer la classe qui est au - dessus de la classe ajoutée-mais je ne peux supprimer aucune classe de mes éléments. Pourquoi est-ce que? Ce que je fais mal? Voici le code:

if(i.stadt=="T") {
    $("#stadtInput").removeClass("ui-input-text input");
    $("#stadtInput").removeClass("ui-input-search input");
    $("#stadtInput").addClass( 'textboxRight' );
} else {
    $("#stadtInput").addClass( 'textboxWrong' );
}

si j'inspecte les éléments avec les outils Webdev du navigateur je peux voir que le textboxRight/textboxWrong la classe est ajoutée, mais aucune classe n'est supprimée. J'ai déjà essayé de supprimer toutes les classes par .removeClass(), mais ça ne marche pas non plus..

19
demandé sur Hashem Qolami 2014-02-25 01:08:12

4 réponses

Je ne suis pas sûr que cela corresponde à vos spécifications, mais la méthode jQuery attr() prendra deux arguments et remplacera toutes les classes avec le nom de la classe que vous fournissez. Cela ne fonctionnera pas si vous avez d'autres classes que vous souhaitez conserver sur votre élément, mais si pas, essayez:

    $("#stadtInput").attr("class", "textboxRight");
22
répondu Alec Moore 2014-07-26 19:08:43

Les quelques lignes qui fonctionne pour moi

var current = $(el).closest(".panel").find(".panel-collapse");
    if( $(current).hasClass("in") ) {
        setTimeout(function(){///workaround
            $(".panel-collapse").removeClass("in");
        }, 10);
    } else {
        $(current).addClass("in");
    }
6
répondu Svet 2015-10-26 08:48:40

j'ai eu le même problème en travaillant sur une application de rails avec le HAML gem de Templier comme j'ai inclus le # au début et il n'est pas vraiment nécessaire. Quand je l'ai enlevé, ça a commencé à marcher.

Espérons que cette aide! :)

2
répondu sebasjimenez10 2016-04-14 05:27:31

avait ce problème plus tôt. Je ne suis pas encore expert en jquery donc je ne sais pas si ça se comporte comme la spécificité de css. Ma solution était de supprimer la classe en utilisant une plus grande spécificité. e.g Au lieu d'utiliser $(this).removeClass('acb'), essayez d'utiliser une plus grande spécificité comme $('#div1').children().first()

1
répondu Patrick Mutuku 2018-07-12 19:04:52