jQuery blur() ne fonctionne pas?
Totalement perplexe ici.
Essayer quelque chose d'assez facile, mais ça ne marche pas:
$("input.input1, textarea.input1").focus(function(){
$(this).addClass("input2").removeClass("input1");
});
$("input.input2, textarea.input2").blur(function(){
$(this).addClass("input1").removeClass("input2");
});
Fondamentalement, le flou n'est pas à la cuisson.
Je clique sur la zone d'entrée et la zone de modifications.
Je clic à partir de la boîte et rien ne se passe.
Toute aide à ce serait génial.
tout d'indices dans firebug? quelle est la version de jquery utilisez-vous?
OriginalL'auteur 3Dom | 2011-11-28
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un gestionnaire délégué que l'entrée n'a pas de classe
input2
au moment où le gestionnaire est appliquée.Il y a probablement de meilleures façons de le faire, cependant. Je suggérerais à l'aide d'une troisième classe pour marquer les entrées qui ont besoin de la classe bascule, puis il suffit de basculer les classes lorsque l'événement se produit.
Si ils ont toujours la classe
input1
pour commencer, vous pouvez l'utiliser à la place deneedsToggle
.C'est vraiment bizarre. Cela a réglé mon problème, j'ai été plus tôt en essayant
$(".inputelem").on("blur", function() {});
. Qui n'a pas de travail pour moi, même si le même pour l'accent a été fonctionne correctement. Cependant, quand j'ai essayé ceci:$(document).on("blur", ".inputelem", function() {});
, il a bien fonctionné. Quelle est la différence entre$(document).on("blur",".inputelem", function() {});
et$("inputelem").on("blur", function() {});
la différence est que ce dernier est seulement s'appliquer à des éléments déjà existants, et si l'élément est supprimé et recréé il doit être réappliqué.La première s'applique au niveau du document (qui existe toujours), mais n'est appelée que si l'élément cible correspond au filtre. L'événement a bulle tout le chemin jusqu'à le document avant de le gestionnaire d'événements est filtré et appliquée. Remarque: le sélecteur peut être autre chose que le document, mais il doit être quelque chose qui n'est pas remplacé dans les DOM.
Encore plus bizarre, alors. Mon élément est dans la page de droite dès le début, et jamais supprimé. Néanmoins, il ne fonctionne pas.
est-il possible que le gestionnaire est en train d'être appliquée avant le chargement de la page terminé? Il doit être appliqué à l'intérieur d'un document prêt gestionnaire et/ou le bas du corps.
OriginalL'auteur tvanfosson
Parce que vous êtes qui affectent les mêmes éléments, c'est un peu plus facile à la chaîne:
JS Fiddle démo.
La raison pour laquelle votre jQuery ne fonctionne pas, je n'en suis pas sûr, j'ai peur, bien que je soupçonne que c'est à faire avec les sélecteurs.
OriginalL'auteur David Thomas
Essayez ce code:
Si cela ne fonctionne pas, vous devrez peut-être utiliser
focusout
au lieu deblur
:focusout
événement fait pour moi, combiné avecblur
pour être absolument sûr 🙂OriginalL'auteur Blender
Vous devez utiliser
.délégué()
si vous êtes sur jQuery < 1.7.Et
.sur()
si vous êtes sur 1.7 ou plus.Ne pas utiliser
.live()
car il est waaaaay plus lent.OriginalL'auteur PeeHaa
Également si vos éléments chargés avec ajax utiliser $(document).(événement,sélecteur de fonction) , car standart par exemple. $(selector).cliquez sur(function() ... ne fonctionnera pas
OriginalL'auteur Andzej Maciusovic