J'écris un assistant de formulaire en utilisant JQuery's Module d'accordéon . Le problème est que je souhaite remplacer tous les clics de souris dans le menu Accordéon afin que le formulaire soit validé avant que l'accordéon affiche la section suivante.
J'ai essayé ce qui suit: p>
$('#accordion h3').click(function(event) { if (validate()) { $("#accordion").accordion('activate', 2); }else { alert("invalid form"); } event.stopPropagation(); });
4 Réponses :
événement.stoppropogation () code> n'arrête pas d'autres gestionnaires d'événements enregistrés avec la cible d'événement d'être appelé, il arrête l'événement de bullementer le DOM si
event.bubbles > est vrai. Vous pouvez essayer d'avoir le gestionnaire d'événements retourner
false code> ou appeler
event.preventdefault () code>, voir ici ou ici A > Pour plus d'informations. P>
Merci, mais je crois que Pêturdefault () n'empêche que le comportement par défaut de l'élément que je m'intercite - par exemple, PREVENDEFAULT () sur un lien arrêtera le navigateur de charger une nouvelle page, et préventivefault () sur un formulaire empêche le formulaire être soumis. Avec le code d'accordéon, je n'essaie pas d'empêcher une action par défaut de se produire, j'essaie d'empêcher une action personnalisée écrite dans le code de l'accordéon. Merci pour la suggestion, mais Pêturdefault et «retour faux» ne résolvent pas le problème
juger du code source, l'événement n'est pas lié à la H3, mais au conteneur environnant (le plugin utilise la délégation d'événements). De plus, le gestionnaire n'est pas lié à et juste pour l'enregistrement: il n'y a pas de tel (du moins pas encore) comme "Module d'accordéon de JQuery". Il n'y a que plusieurs plug-ins de l'accordéon pour JQuery. P> P> Cliquez sur CODE>, mais à
Cliquez sur.UI-Accordion Code>. Alors essayez:
Merci, j'ai essayé $ ('# accordéon'). Unbind (); Auparavant, mais cela n'a pas résolu le problème. Je pense que le problème est quel élément l'événement est lié, mais j'ai essayé de détester à peu près tous les éléments de l'accordéon, mais le clic est toujours détecté et le code est toujours exécuté.
Avez-vous essayé $ ('# accordéon'). UNBIND ("Cliquez sur") CODE> ou
$ ("# CODEL"). UNBIND ("Click.UI-Accordion ') CODE> ? Il y a une différence. Essayez également
$ ('# accordéon h3'). Unbind ('click.ui-accordéon') code>. Cela dépend de la version que vous utilisez.
Étrange, mais j'ai essayé de différer tous les éléments à l'intérieur de l'accordéon et que le clic est toujours enregistré par JQuery. J'ai essayé tout le code suivant: $ ('# accordéon'). Unbind ('click.ui-accordéon'); $ ('# accordéon'). Unbind ("cliquer"); $ ('# accordéon h3'). UNBIND ('click.ui-accordéon'); $ ('# accordéon h3'). Unbind ("cliquer"); $ ('# accordéon div'). Description ("click.ui-accordéon"); $ ('# accordéon div'). UNBIND ("Cliquez sur"); $ ('# accordéon div p'). Unbind ('click.ui-accordéon'); $ ('# accordéon div p'). Unbind ("cliquer"); mais sans être disponible ... continuera à travailler sur cela et postera toute solution si j'en trouve un
D'accord, a pris une pause de codage de cette fonction et je suis revenu avec une nouvelle paire d'yeux. Voici la solution:
$("#accordion").accordion({event: false});
J'ai le même problème que vous avez fait. Comment avez-vous fini par déménager dans le prochain panneau d'accordéon?
Vous devez écrire le code ci-dessous ensemble en bas de la fonction prête:
$('#accordion h3').unbind('click'); $('#accordion a').unbind('click');