JQuery accordion - unbind cliquez sur l'événement
Je suis en train d'écrire un assistant de création de formulaire à l'aide de JQuery accordéon module. Le problème c'est que je veux remplacer tous les clics de souris sur le menu accordéon ainsi que le formulaire est validé d'abord avant de l'accordéon montrera la section suivante.
J'ai essayé ce qui suit:
$('#accordion h3').unbind();
$('#accordion h3').click(function() {
if (validate())
{
$("#accordion").accordion('activate', 2);
}else
{
alert("invalid form");
}
}
Mais le code ci-dessus ne fonctionne pas. Le haut-cliquez sur l'événement de l'accordéon devient encore appelée l'accordéon et montre la section suivante, indépendamment de si le formulaire est valide ou pas.
J'ai aussi essayé le code suivant:
$('#accordion h3').click(function(event) {
if (validate())
{
$("#accordion").accordion('activate', 2);
}else
{
alert("invalid form");
}
event.stopPropagation();
});
Mais la stopPropagation() l'appel ne semble pas affecter l'accordéon comportement à tous, la section suivante s'affiche si le formulaire est valide.
Une idée de ce que j'ai fait de mal?
Merci!
OriginalL'auteur Stinky Tofu | 2009-11-25
Vous devez vous connecter pour publier un commentaire.
Bon, a pris une pause de codage de cette fonction et revenir à lui avec une nouvelle paire d'yeux. Voici la solution:
En ajoutant l'événement:faux à l'accordéon intitialization code permettra d'éviter des clics de souris sur le menu accordéon de l'exécution de l'action par défaut et puis je peux écrire personnalisé, cliquez sur le code de gestion pour exécuter la validation de la fonction() lorsque l'utilisateur clique sur le menu, essentiellement en substituant l'accordéon intégré cliquez sur la fonction si la forme d'échec de la vérification de la validation.
BTW, je suis à l'aide de JQuery UI accordion module ici.
Fonctionne avec ie7,8, chrome 19, ff 3.0.3
OriginalL'auteur Stinky Tofu
event.stopPropogation()
n'arrête pas d'autres gestionnaires d'événements enregistrés auprès de la cible de l'événement d'être appelé, il s'arrête en cas de remontée des DOM sievent.bubbles
est vrai. Vous pourriez essayer d'avoir le gestionnaire d'événement de retourfalse
ou en appelantevent.preventDefault()
, voir ici ou ici pour plus d'info.OriginalL'auteur Ryan Lynch
À en juger par le code source, l'événement n'est pas lié à la h3, mais aux environs de conteneurs (le plugin utilise l'événement de la délégation). En outre, le gestionnaire n'est pas lié à
click
, mais àclick.ui-accordion
. Donc, essayez:Et juste pour le record: Il n'y a pas une telle chose, du moins pas encore) comme "JQuery accordion module". Il y a simplement plusieurs accordéon plugins pour JQuery.
Avez-vous essayé
$('#accordion').unbind('click')
ou$('#accordion').unbind('click.ui-accordion')
? Il y a une différence. Essayez également$('#accordion h3').unbind('click.ui-accordion')
. Cela dépend de la version que vous utilisez.Étrange, mais j'ai essayé de déliaison tous les éléments à l'intérieur de l'accordéon et de la cliquez obtient toujours enregistré par JQuery. J'ai essayé le code suivant: $('#accordéon').unbind('click.l'interface utilisateur de l'accordéon'); $('#accordéon').unbind('click'); $('#accordéon h3').unbind('click.l'interface utilisateur de l'accordéon'); $('#accordéon h3').unbind('click'); $('#accordéon div').unbind('click.l'interface utilisateur de l'accordéon'); $('#accordéon div').unbind('click'); $('#accordéon div p').unbind('click.l'interface utilisateur de l'accordéon'); $('#accordéon div p').unbind('click'); mais en vain... allons continuer de travailler sur ce et de publier tout solution si je trouve un
OriginalL'auteur Tom Bartel
Vous devez écrire le code ci-dessous en bas de prêt de la fonction:
OriginalL'auteur Ashwin Chetri