2010-08-29 3 views
1

J'ai une fonction de pointe jQuery. Je voudrais créer un bouton pour allumer et éteindre la fonction. Je veux qu'il soit activé par défaut.Activer et désactiver la fonction

Est-il possible de créer un lien pour activer et désactiver une fonction?

+1

Peut-être que plutôt que de vouloir basculer la fonction elle-même, vous êtes après un moyen de définir un indicateur pour déterminer si vous souhaitez effectuer une action? Une variable globale le ferait, mais vous pourriez également enregistrer et désenregistrer un gestionnaire d'événement lié. – cofiem

Répondre

2

Vous pouvez ajouter dynamiquement et soustraire des gestionnaires d'événements avec les fonctions bind et unbind.

$("#id").click(function() { 

    if (HANDLER_IS_SET) 
     $("#button").unbind("click");  
    else  
     $("#button").bind("click", myEventHandlerFunction);    
} 
+0

Je veux utiliser cette fonction: http://code.drewwilson.com/entry/tiptip-jquery-plugin Puis-je avoir une case à cocher qui va désactiver la fonction? – Erik

+0

@Erik oui vous pouvez. Nous ne le codons pas pour vous, mais nous pouvons vous aider si vous avez des questions. :RÉ –

0

Un peu plus d'informations est nécessaire, mais vous pouvez utiliser une variable globale pour basculer une instruction if dans la fonction afin qu'elle n'exécute rien, mais la fonction sera toujours appelée.

+1

Décrocher et rehooking est une autre alternative (moins laide). – You

1

Vous pouvez définir un booléen pour vérifier s'il est activé ou désactivé, ou pour lier et dissocier une fonction.

var isOn = false; 

$("#button").click(function(){ isOn = !isOn; }); 

$("#executebutton").click(MyFunction); 

function MyFunction() 
{ 
    if (!isOn) return; 
    // do stuff 
} 

ou

$("#button").click 
(
    function() 
    { 
     if ($("#executebutton").data("events").click != undefined) 
      $("#executebutton").unbind("click"); 
     else 
      $("#executebutton").bind("click", MyFunction); 
    } 
); 
Questions connexes