J'ai une erreur reproductible ici, où j'exécute dans un C'est juste un événement de clic que j'appelle sur un lien. p> mon HTML: p> mon javascript: p> maintenant, en cliquant sur le Company RangeError: la taille maximale de la pile d'appels dépassée code> #box code> conduit à une erreur. P>
3 Réponses :
Vous devriez arrêter la propagation avec stopimmediatepropagation (), sinon vous avez trop de rcucursion < Pré> xxx pré>
violon http://jsfiddle.net/dmamv/8/4/ p> p>
Merci beaucoup pour cela ... ça me conduisait fou :)
C'est parce qu'il déclenche de manière récursive l'événement de clic. Ceci est causé par deux problèmes.
Le premier est cette ligne d'apparence innocente: p> qui réduit essentiellement à Préparez la ligne avec le manquant code> code> pour résoudre ce problème, c'est-à-dire Pour résoudre ce problème, utilisez Voici un exemple avec les correctifs ci-dessus en place: http://jsfiddle.net/dmamv/9/ p> p> $ (ceci) .click () Code> (parce que le opérateur de virgule évalue les opérandes et renvoie le second) et donc votre événement de clic sur #Container code> se déclenche. Considérez les exemples suivants - http://jsfiddle.net/2vnbg/ et $ code> est manquant. P> $ ("A", $ (this)). Cliquez sur (); P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> Le problème suivant est qu'un événement de clic sur l'ancrage bulle jusqu'à l'objet parent (dans votre cas, #Container code>). Si le parent a une fonction lié à l'événement de clic qui déclenche un nouvel événement, le cycle va répéter infiniment. P> event.stoppropagation () code> pour arrêter l'événement de bullementer l'arbre DOM. p>
Le mien était un élément de liste dans une liste déroulante, donc je voulais que l'événement continue de bouder afin que la liste déroulante soit fermée. C'est la solution que j'ai utilisée: