jquery changement == à contient?
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 = "";
}
} );
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.