2011-02-17 3 views
0

Comment puis-je récupérer quelle est ma cible "actuelle"? Je voudrais avoir différentes variables à l'intérieur de cette fonction.jQuery cible actuelle dans la sélection multiple

$('#header a, #nav a').click(function (event) { 

// if is $('#header a') do this 
// if is $('#nav a') do that 

}); 
+1

Ou bien mettre la logique en une seule fonction et de diviser le clic en deux appels appelant la même fonction. – melaos

+2

Si vous faites deux choses totalement différentes pour les éléments, vous devez attacher un gestionnaire d'événement individuel à chaque élément. –

Répondre

4

this se référera à l'élément DOM réel, et donc vous pouvez vérifier tagName ou className, ou venir chercher $(this).parents('#header').

$('#header a, #nav a').click(function (event) { 
    var $this = $(this); 

    if ($this.parents("#header").length > 0) { 
    display("I'm inside #header"); 
    } 
    else if ($this.parents("#nav").length > 0) { 
    display("I'm inside #nav"); 
    } 
    else { 
    // Obviously this won't happen. 
    // None of us has *ever* changed a selector and forgotten to update the code! ;-) 
    display("I'm confused!"); 
    } 

    return false; 

}); 

Live example


hors sujet: Je suis d'accord avec Felix et melaos que si vous êtes vraiment faire des choses qui différent, refactoring dans des gestionnaires distincts (peut-être appeler des fonctions communes) est probablement La meilleure façon de procéder ...

+0

exactement ce que je cherche! – Dee

1

ce fait référence à l'élément en cours dans la collection de correspondances pour le sélecteur/s. Cependant, si vous devez traiter chaque élément différemment, pourquoi voulez-vous lier l'événement click pour les éléments en tant que groupe (c'est-à-dire en utilisant un seul sélecteur).

Pour gérer le code d'une meilleure façon, j'utiliser deux appels se lient comme:

$("#header a").click(function (event) { 
//Do what you need to do for #header a 
}); 

$("#nav a").click(function (event) { 
//Do what you need to do for #nav a 
}); 
Questions connexes