jQuery .when (). done () ne fonctionne pas

Je voudrais commencer par dire que je suis nouveau sur jQuery et je pense que je vais juste faire quelque chose de stupide, donc j'espère que ce sera très simple pour quelqu'un.

J'essaye d'ajouter un mobile coulissant sous-menu pour mon site web. Je veux un effet d'accordéon de sorte que si je clique sur un lien parent, c'est l'enfant de sous-menu s'ouvre et tous les autres sous-menus à proximité. Le problème, c'est le timing de l'enfant sous-menu s'ouvre, puis se referme par la remise à zéro de tous les sous-menus. Je suppose que la réponse est d'utiliser deferreds mais tout ce que j'ai essayé a échoué. C'est l' (actuellement pas de travail) code:

function ResetMenu(){
    jQuery(".mobile-menu").find(".sub-menu").slideUp(100);
    jQuery(".mobile-menu").find(".menu-item-has-child").removeClass("open");
};

function OpenSubmenu(){
    jQuery(this).next("ul").slideDown(100);
    jQuery(this).parent().addClass("open");
};

jQuery("li.menu-item-has-children > a").click(function(){

    if(jQuery(this).parent().hasClass("open")){
        jQuery(".mobile-menu").find(".sub-menu").slideUp(100);
        jQuery(this).parent().removeClass("open");
    } else {
        jQuery.when(ResetMenu()).done(OpenSubmenu());
    }
    return false;
});

Toute aide serait grandement appréciée. Merci!!!!

Ronel

source d'informationauteur Ronelz