Question

Je suis en train de modifier le code ci-dessous afin que si « ce » contient la classe « search_init », il ne remplacera cette classe, comme le balisage lui-même a plusieurs classes appliquées. J'ai essayé ~ = et ^ =, mais cela me donne des erreurs de manquer ().

$("tfoot input").focus( function () {
            if ( this.className == "search_init" )  {
                this.className = "";
                this.value = "";
            }
        } );
Était-ce utile?

La solution

Essayez ceci:

$("tfoot input").focus( function () {
    var $this = $(this);
    if ( $this.hasClass("search_init") )  {
        $this.removeClass("search_int").val('');
    }
});

Autres conseils

$("tfoot input.search_init").focus( function () {
                $(this).removeClass("search_init");
                this.value = "";
            }
        } );

~ = « sélectionne les éléments qui ont l'attribut spécifié avec une valeur contenant un mot donné, délimité par des espaces. » Cela fonctionne, mais il est beaucoup plus logique d'utiliser construit dans les sélecteurs de classe que mess avec l'attribut de classe elle-même. De même avec ^ =, qui « sélectionne des éléments ayant l'attribut spécifié avec une valeur en commençant avec exactement une chaîne donnée. »

Devrait être une seule ligne:

$('tfoo input.search_init').focus(function(e) {$(this).removeClass('search_init').val('');});

En aparté, vous pouvez changer le style avec un css .search_init:focus méta-classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top