2010-06-22 2 views
1

Je dois pouvoir contourner la première fonction d'une bascule et je me demandais comment fonctionne la bascule jquery?Nécessité de contourner la fonction de bascule jquery

Je comprends que si je clique sur quelque chose, la première fonction est effectuée et puis quand je clique dessus, la deuxième fonction est exécutée.

Ce que je dois pouvoir faire est de contourner la première fonction et d'aller directement à la seconde.

Raison Je fais cela, c'est que l'état d'un bouton a été modifié par un autre événement qui s'est produit. Lorsque je clique pour la première fois sur ce bouton, cela suppose que c'est la première fois que l'on clique dessus et que j'accomplis la première fonction quand j'en ai besoin pour effectuer la seconde fonction.

Y a-t-il un moyen de contourner cela? Si la fonction de bascule jQuery équivaut à un vrai ou faux, alors je devrais être capable de vérifier cela et d'appeler le bon script?

Merci beaucoup!

Répondre

1

Je suppose que l'autre événement toujours feu avant la première bascule, sinon vous pourriez simplement inverser les fonctions.

Pourriez-vous modifier votre autre événement pour déclencher la bascule? Si l'autre événement effectue la même tâche, alors ce serait le chemin à parcourir.

// From within the other event's handler 
$(someselector).click(); // to fire the toggle 

Sinon, vous pouvez utiliser .data() de placer un drapeau sur l'élément pour vérifier si le toggle() a tiré encore. Si ce n'est pas le cas, lancez le premier test de fonction pour voir si l'élément a été modifié par l'autre événement.

$(someselector).toggle(
    function() { 
     var $th = $(this); 
     if(!$th.data('toggled')) { // Check if toggle has not yet run 
      $th.data('toggled', true); // If not, set flag it to show it has run 
      if(some_test_to_see_if_modified_externally) { 
       $th.click() // fire the second toggle 
       return;  // return if element has been modified externally 
      } 
     } 
     // otherwise run the normal code 
    }, 
    function() { 
     // your normal code 
    } 
); 
+0

Bonjour Patrick, Merci de m'envoyer cet exemple. Je vais l'utiliser si je ne viens pas bien, mais si vous pouvez me montrer comment l'autre fonction peut appeler la bascule, ce serait génial car cela éclaircirait beaucoup d'encombrement! Merci beaucoup! –

+0

@Sixfoot - Oui, utilisez simplement le premier exemple de code que j'ai donné près du haut de ma réponse. Un 'toggle()' est juste un événement click. Donc, lorsque votre autre événement apporte les modifications à l'élément qui a l'événement 'toggle', il suffit d'effectuer un événement' click() ':' $ (someselector) .click(); 'Ceci déclenchera la bascule comme si il avait été cliqué. – user113716

+0

Ok, je vais essayer ça et revenir vers vous! Merci Patrick pour toute ton aide jusqu'ici! –

0

Vous pouvez créer une variable en dehors de la fonction bascule: var isFirstToggle = true;.

Ensuite, dans votre callback à bascule, revenez juste s'il est vrai; Laissez-moi savoir ce que vous en pensez et si cela vous semble approprié. Il y a probablement des manières plus propres de le gérer, mais cela devrait fonctionner rapidement.

+0

Ceci désactiverait * toujours * la première bascule. Ceci peut ne pas être désiré. Si c'était le cas, vous pourriez simplement inverser l'ordre des deux fonctions. : o) – user113716