Comment annuler l'événement de changement pour les contrôles d'accordéon

$("#accordion").accordion({ change: function (event, ui) { alert('event have to be changed') }, changestart: function (event, ui) { return false; } }); 

Est-il possible d'annuler l'événement de changement?

Je ne suis pas sûr de changer, mais pour d'autres événements dans jqueryui renvoyer faux annule l'événement.

StopPropagation () est la clé pour arrêter une action jQueryUI du traitement, mais elle doit être interrompue AVANT l'événement changestart. Par exemple, lorsque l'élément d'en-tête est effectivement cliqué.

S'il s'agit d'une paire header / content dans votre accordéon:

 <h3 class='noexpand'>This is a dummy header</h3> <div>This is dummy content</div> 

Ensuite, cela empêchera l'accordéon d'étendre le div lorsque l'en-tête est cliqué:

 $("h3.noexpand").click(function(e) { e.stopPropagation(); }); 

Voir l' accordéon de jquery pour empêcher l'action de liaison par burinage / autorisation par défaut .

Comme Martin l'a dit, vous pouvez renvoyer des faux. Voir un exemple de code ci-dessous.

 ... eventname: function( event, ui ) { // Add your code here ... return false; } 
 event.preventDefault(); event.stopPropagate(); 

Le retour de faux ne fait rien, pour annuler un événement dans jQueryUI, vous devez appeler preventDefault () sur l'événement.

 $("#accordion").accordion({ changestart: function (event, ui) { event.preventDefault(); } }); 

Cela devrait fonctionner avec toutes les méthodes d'événement, y compris l'autocomplète. Handy si vous souhaitez inclure quelques options personnalisées dans votre menu autocomplete que vous souhaitez que quelqu'un sélectionne, mais ne souhaite pas ajouter à l'entrée qu'il est lié. 🙂

Ce qui a fonctionné pour moi, c'est appeler:

 function onChange(e, ui) { e.preventDefault(); e.stopPropagation(); } 

Le retour de false à la fin de la fonction a le même effet car il équivaut à effectuer ces deux appels de fonction.