2010-10-27 3 views
1

Bonjour les peuples.Jquery/Javascript

J'ai un peu une question/un problème de jQuery que je ne suis pas sûr de savoir comment aborder.

J'ai un gestionnaire de clic lié à des classes variables sur certains points d'ancrage (ce qui fonctionne très bien). Je viens maintenant à une page qui a besoin d'un gestionnaire supplémentaire sur les mêmes balises d'ancrage, j'ai donc décidé d'utiliser un espace de noms pour obtenir le résultat souhaité. Le problème avec le namespacing est qu'il est appelé avant le gestionnaire de clic d'origine et crée des problèmes avec le premier gestionnaire. L'erreur est déclenchée en raison du premier gestionnaire qui nécessite la présence d'un élément pour continuer dans la fonction, mais le gestionnaire de clics avec espace de noms supprime l'élément avant, ce qui entraîne une erreur. Est-ce que quelqu'un sait si on peut dire aux gestionnaires de namespaced d'exécuter After the handler original ou devrais-je réécrire complètement le script et peut-être le prolonger sur cette page (et seulement) pour que la fonctionnalité fonctionne comme je le ferais comme.

Merci d'avance.

Alex

+0

Je dois ajouter que la première liaison est avec en direct(); – Alex

+0

Le titre de cette question ne donne pas une information pertinente. Envisagez de le changer. –

Répondre

0

Il est plus facile d'ajouter un nom de classe aux points d'ancrage sur la page que les événements sont liés à et vérifier que dans ma fonction ..

Désolé pour tout temps perdu

0

Si vous apportez le gestionnaire dans une fonction distincte, vous pouvez appeler le gestionnaire d'origine de l'autre gestionnaire.

function handler() { 
    // original event handler code 
}; 

$('#originalTarget').click(handler); 

$('#otherTarget').click(function() { 
    // code to do anything specific to this handler 
    handler(); 
} 
0

Vous pouvez attribuer plus d'un gestionnaire:

// general handler 
$('a.linkclass').click(function(){ 
    doThis(); 
}); 

// specific handler on the page in question 
$('#specificlink').click(function(){ 
    doSomethingExtra(); 
});