2009-09-14 9 views
1

Voici ce que j'essaie de faire:Intercepter l'événement javascript

J'ai une page avec quelques liens. La plupart des liens ont une fonction attachée à eux sur l'événement onclick.

Maintenant, je veux définir une classe css à certains liens et puis chaque fois que l'un des liens est cliqué, je veux exécuter une certaine fonction - après son retour, je veux que le lien exécute les fonctions onclick qui étaient attachées il.

Existe-t-il un moyen de faire ce que je veux? J'utilise jQuery si ça fait une différence.

est ici une tentative d'un exemple:

$("#link").click(function1); 
$("#link").click(function2); 
$("#link").click(function(){ 
    firstFunctionToBeCalled(function(){ 
     // ok, now execute function1 and function2 
    }); 
}); // somehow this needs to be the first one that is called 


function firstFunctionToBeCalled(callback){ 
    // here some user input is expected so function1 and function2 must not get called 
    callback(); 

} 

Tout cela est parce que je me demande de mettre des boîtes de confirmation (en utilisant boxy) pour un grand nombre de boutons et je ne veux vraiment pas aller à travers chaque bouton.

+0

Voir les documents connexes : http://stackoverflow.com/questions/487069/add-event-in-the-head-of-the-queue –

Répondre

0

J'utiliserais unbind de jQuery pour supprimer tous les événements existants, puis lier une fonction qui orchestrera les événements que je veux dans l'ordre où je les veux.

Les deux se lient et unbind sont dans la documentation jQuery sur jquery.com et travailler comme ça ...

$(".myClass").unbind("click"); // removes all clicks - you can also pass a specific function to unbind 

$(".myClass").click(function() { 
    myFunctionA(); 
    myFunctionB($(this).html()); // example of obtaining something related to the referrer 
}); 
+0

Qu'en est-il de la fonction onclick attachée à l'élément? – rahul

+0

Exactement, le fait est que chaque lien a une méthode/des méthodes différentes - et le mécanisme doit être générique - donc je peux l'appliquer à n'importe quel élément. – sirrocco

0

Une bidouille horrible sera d'utiliser le mousedown ou mouseup événements. Ceux-ci seront appelés before the click event.

+0

Oui, mais lorsque cela est cliqué, j'ai besoin d'exécuter une fonction et sur ce rappel de fonctions - continuer à exécuter toutes ses fonctions jointes par clic. – sirrocco

1

Si je vous comprends bien, est-ce wat que vous vouliez faire ..

var originalEvent = page.onclick; //your actual onclick method 
page.onclick = handleinLocal;  //overrides this with your locaMethod 

function handleinLocal() 
{  ...your code...  
    originalEvent(); 
// invoke original handler 
} 
0

Si vous pouvez ajouter votre gestionnaire d'événements avant que le reste des gestionnaires, vous pouvez essayer d'utiliser jQuery de stopInmediatePropagation

Questions connexes