8
votes

Désactiver cliquez sur le gestionnaire d'événements pendant toute la durée

J'ai déjà examiné des questions similaires, mais les réponses fournies impliquent des boutons et non des éléments div. Lorsque je clique sur l'élément div avec ID Cliquez sur , le gestionnaire d'événements click est désactivé par Unbind () et définit une minuterie pendant 2 secondes. Après 2 secondes, le gestionnaire d'événements clic doit être activé à nouveau par Bind () . Le problème est que le gestionnaire d'événements de clic ne semble pas obtenir "rebond". Je suis ajouté au texte à un autre élément div pour vérifier si le gestionnaire d'événements clic est actif.

Voici mon Jsfiddle .


0 commentaires

5 Réponses :


0
votes

Lorsque vous redéfinissez la fonction la deuxième fois que vous liez un sous-ensemble de tout votre code - tout cela ne rendait-il pas à l'état, mais il ne contient aucun du code pour effectuer un délai d'attente une seconde fois. .

Aussi, vous aimerez la fonction .one () .

J'ai corrigé votre code ici: https://jsfiddle.net/equne/6/ xxx


0 commentaires

0
votes

Essayez ceci:

$(document).ready(function(){

$('#click').click(function(){

    $('#click').unbind('click');
    $('#status').append("unbound ");

    setTimeout(
        function(){
            $('#click').bind('click',function(){

            });
            $('#status').append("bound ");           
        },
        2000
        );
    });
});


0 commentaires

0
votes

Si j'ai eu ce que vous demandiez correctement, cela devrait fonctionner: xxx

vérifier ici: https://jsfiddle.net/equne/


0 commentaires

0
votes

Je réponds à votre question mais ne vous tuez pas :)) Vous plaisantez simplement ... Votre code est bien juste un typo: Settimeout devrait être Settimeout (le O devrait être o)


0 commentaires

15
votes

Une autre approche de l'ensemble du problème est de ne pas vous soucier d'un libidage et de la reproduction et d'utiliser simplement un drapeau "désactivé": xxx


0 commentaires