Question

Je suivais ce fil pour désactiver / activer le clic sur un bouton, La meilleure façon de supprimer un gestionnaire d'événement dans jQuery?

L'idée est que vous pouvez également utiliser la méthode en direct () pour activer / désactiver les événements. Qu'est-ce qui se passera avec ce code est que lorsque vous cliquez sur un élément d'un tag, par exemple, .load-élément, il ajoutera la classe désactivée à cet élément. Cela fera en sorte que le sélecteur ne correspond plus à l'élément et l'événement ne sera pas tiré jusqu'à ce que la classe « handicapé » est retiré du sélecteur faisant .live () valide à nouveau.

Voici ce que je suis sorti avec et il ne désactive le clic sur le premier bouton,

$('.load-item:not(.disabled)').live('click',function(){


/* add a .current class to the target item */
$(this).parentsUntil('.column-global').addClass('current');

/* add .disabled class to each a tag in the .current element-div */
$('.current a').each(function(index) {
    $(this).addClass('disabled');
});

....

});

et j'ai une autre fonction pour supprimer la classe désactivée lorsque vous cliquez sur un autre bouton,

$('.button-return').click(function(){

    ...

    /* remove all the .disabled class if any exists */
    $('.current a').each(function(index) {
        $(this).removeClass('disabled');
    });

    ...

    /* remove all the .current class if any exists */
    $('.item-global').removeClass('current');



    return false;

});

J'ai vérifié qu'il ne supprime la classe désactivée, mais le premier bouton est toujours pas à l'état d'origine cliquable.

ai-je manqué quelque chose - ou le live () effectivement vit qu'une seule fois seulement? les meilleures solutions si en direct () n'est pas celui que je doit travailler sur ??

merci.

Était-ce utile?

La solution

Votre bouton retour doit être un événement en direct et

$('.button-return:not(disabled)').live("click",function(){...});

En outre lors de l'utilisation addClass () et removeClass () vous n'avez pas besoin d'utiliser chacun sur le sélecteur. appeler tout simplement.

$('.current a').each(function(index) {
    $(this).removeClass('disabled');
});

est le même que celui

$('.current a').removeClass('disabled');

Edité

Remarque lorsque vous ajoutez l'événement en direct sur le bouton de retour, vous devez vérifier qu'il est pas désactivé.

Il fonctionne parfaitement ici est un simple démo http://www.jsfiddle.net/Qax3n/

Autres conseils

Il doit avoir quelque chose à voir avec votre mise en page HTML ou Javascript autre. Les travaux suivants: http://jsfiddle.net/EEJEh/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top